summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.rst131
-rw-r--r--MANIFEST.in7
-rw-r--r--PKG-INFO12
-rw-r--r--README.rst7
-rwxr-xr-xbuild-deb.sh12
-rw-r--r--debian/changelog6
-rw-r--r--debian/control88
-rw-r--r--debian/copyright8
-rw-r--r--debian/patches/0003-do-not-modify-PYTHONPATH-from-setup.py.patch4
-rw-r--r--debian/patches/0004-skip-two-tests.patch22
-rw-r--r--debian/patches/0006-Tests-if-openCL-can-be-used.patch10
-rw-r--r--debian/tests/control6
-rw-r--r--debian/upstream/signing-key.asc247
-rw-r--r--doc/source/Tutorials/array_widget.rst4
-rw-r--r--doc/source/Tutorials/fit.rst6
-rw-r--r--doc/source/Tutorials/fitconfig.rst4
-rw-r--r--doc/source/Tutorials/writing_NXdata.rst3
-rw-r--r--doc/source/applications/view.rst4
-rw-r--r--doc/source/ext/snapshotqt_directive.py2
-rw-r--r--doc/source/index.rst11
-rw-r--r--doc/source/install.rst23
-rw-r--r--doc/source/modules/gui/icons.rst388
-rw-r--r--doc/source/modules/gui/plot/getting_started.rst6
-rw-r--r--doc/source/modules/gui/widgets/printpreview.rst4
-rw-r--r--doc/source/modules/io/fioh5.rst35
-rw-r--r--doc/source/modules/io/index.rst1
-rw-r--r--doc/source/virtualenv.rst2
-rw-r--r--examples/colormapDialog.py8
-rw-r--r--examples/compareImages.py4
-rw-r--r--examples/compositeline.py2
-rw-r--r--examples/customDataView.py2
-rw-r--r--examples/customHdf5TreeModel.py2
-rw-r--r--examples/dropZones.py4
-rw-r--r--examples/exampleBaseline.py4
-rwxr-xr-xexamples/fftPlotAction.py2
-rw-r--r--examples/fileDialog.py12
-rw-r--r--examples/findContours.py4
-rwxr-xr-xexamples/hdf5widget.py11
-rw-r--r--examples/icons.py4
-rw-r--r--examples/imageStack.py4
-rwxr-xr-xexamples/imageview.py87
-rw-r--r--examples/periodicTable.py5
-rw-r--r--examples/plot3dContextMenu.py6
-rw-r--r--examples/plot3dSceneWindow.py4
-rw-r--r--examples/plot3dUpdateScatterFromThread.py2
-rw-r--r--examples/plotClearAction.py4
-rw-r--r--examples/plotContextMenu.py4
-rw-r--r--examples/plotCurveLegendWidget.py6
-rw-r--r--examples/plotInteractiveImageROI.py4
-rwxr-xr-xexamples/plotItemsSelector.py4
-rw-r--r--examples/plotLimits.py4
-rw-r--r--examples/plotProfile.py2
-rw-r--r--examples/plotROIStats.py6
-rw-r--r--examples/plotStats.py4
-rw-r--r--examples/plotUpdateCurveFromThread.py4
-rw-r--r--examples/plotUpdateImageFromThread.py5
-rw-r--r--examples/plotWidget.py6
-rwxr-xr-xexamples/printPreview.py4
-rw-r--r--examples/scatterMask.py2
-rwxr-xr-xexamples/scatterview.py2
-rwxr-xr-xexamples/shiftPlotAction.py4
-rwxr-xr-xexamples/simplewidget.py2
-rw-r--r--examples/stackView.py2
-rw-r--r--examples/syncPlotLocation.py2
-rw-r--r--examples/syncaxis.py2
-rw-r--r--examples/viewer3DVolume.py2
-rw-r--r--package/debian10/control3
-rw-r--r--package/debian11/control3
-rw-r--r--package/windows/README.rst24
-rw-r--r--package/windows/create-installer.iss.template92
-rw-r--r--package/windows/pyinstaller-silx-view.spec55
-rw-r--r--package/windows/pyinstaller.spec162
-rw-r--r--pyproject.toml1
-rw-r--r--qtdesigner_plugins/plot1dplugin.py6
-rw-r--r--qtdesigner_plugins/plot2dplugin.py6
-rw-r--r--qtdesigner_plugins/plotwidgetplugin.py6
-rw-r--r--qtdesigner_plugins/plotwindowplugin.py6
-rw-r--r--requirements-dev.txt8
-rw-r--r--requirements.txt5
-rwxr-xr-xrun_tests.py350
-rw-r--r--setup.py51
-rw-r--r--silx.egg-info/PKG-INFO12
-rw-r--r--silx.egg-info/SOURCES.txt2230
-rw-r--r--silx.egg-info/requires.txt6
-rw-r--r--silx/__init__.py61
-rw-r--r--silx/app/convert.py525
-rw-r--r--silx/app/test/__init__.py39
-rw-r--r--silx/app/test/test_convert.py167
-rw-r--r--silx/app/test_.py159
-rw-r--r--silx/app/view/About.py257
-rw-r--r--silx/app/view/ApplicationContext.py194
-rw-r--r--silx/app/view/CustomNxdataWidget.py1008
-rw-r--r--silx/app/view/Viewer.py971
-rw-r--r--silx/app/view/main.py171
-rw-r--r--silx/app/view/test/__init__.py41
-rw-r--r--silx/app/view/test/test_launcher.py151
-rw-r--r--silx/app/view/test/test_view.py394
-rw-r--r--silx/gui/_glutils/FramebufferTexture.py165
-rw-r--r--silx/gui/_glutils/OpenGLWidget.py423
-rw-r--r--silx/gui/_glutils/font.py163
-rw-r--r--silx/gui/_glutils/utils.py121
-rwxr-xr-xsilx/gui/colors.py1326
-rw-r--r--silx/gui/console.py202
-rw-r--r--silx/gui/data/ArrayTableModel.py670
-rw-r--r--silx/gui/data/ArrayTableWidget.py492
-rw-r--r--silx/gui/data/Hdf5TableView.py646
-rw-r--r--silx/gui/data/HexaTableView.py286
-rw-r--r--silx/gui/data/NXdataWidgets.py1081
-rw-r--r--silx/gui/data/RecordTableView.py447
-rw-r--r--silx/gui/data/TextFormatter.py395
-rw-r--r--silx/gui/data/test/__init__.py45
-rw-r--r--silx/gui/data/test/test_arraywidget.py329
-rw-r--r--silx/gui/data/test/test_dataviewer.py314
-rw-r--r--silx/gui/data/test/test_numpyaxesselector.py161
-rw-r--r--silx/gui/data/test/test_textformatter.py212
-rw-r--r--silx/gui/dialog/AbstractDataFileDialog.py1742
-rw-r--r--silx/gui/dialog/ColormapDialog.py1771
-rw-r--r--silx/gui/dialog/DataFileDialog.py340
-rw-r--r--silx/gui/dialog/DatasetDialog.py122
-rw-r--r--silx/gui/dialog/GroupDialog.py230
-rw-r--r--silx/gui/dialog/ImageFileDialog.py354
-rw-r--r--silx/gui/dialog/SafeFileSystemModel.py804
-rw-r--r--silx/gui/dialog/test/__init__.py49
-rw-r--r--silx/gui/dialog/test/test_colormapdialog.py453
-rw-r--r--silx/gui/dialog/test/test_datafiledialog.py939
-rw-r--r--silx/gui/dialog/test/test_imagefiledialog.py784
-rw-r--r--silx/gui/dialog/utils.py106
-rw-r--r--silx/gui/fit/BackgroundWidget.py534
-rw-r--r--silx/gui/fit/FitConfig.py543
-rw-r--r--silx/gui/fit/FitWidget.py739
-rw-r--r--silx/gui/fit/FitWidgets.py559
-rw-r--r--silx/gui/fit/Parameters.py882
-rw-r--r--silx/gui/fit/test/__init__.py43
-rw-r--r--silx/gui/fit/test/testBackgroundWidget.py83
-rw-r--r--silx/gui/fit/test/testFitConfig.py95
-rw-r--r--silx/gui/fit/test/testFitWidget.py135
-rw-r--r--silx/gui/hdf5/Hdf5Formatter.py241
-rw-r--r--silx/gui/hdf5/Hdf5HeaderView.py195
-rw-r--r--silx/gui/hdf5/Hdf5TreeModel.py778
-rw-r--r--silx/gui/hdf5/Hdf5TreeView.py271
-rw-r--r--silx/gui/hdf5/_utils.py461
-rw-r--r--silx/gui/hdf5/test/__init__.py39
-rwxr-xr-xsilx/gui/hdf5/test/test_hdf5.py1140
-rw-r--r--silx/gui/plot/AlphaSlider.py300
-rw-r--r--silx/gui/plot/ColorBar.py881
-rw-r--r--silx/gui/plot/CompareImages.py1249
-rw-r--r--silx/gui/plot/ComplexImageView.py518
-rw-r--r--silx/gui/plot/CurvesROIWidget.py1584
-rw-r--r--silx/gui/plot/ImageStack.py636
-rw-r--r--silx/gui/plot/ImageView.py854
-rw-r--r--silx/gui/plot/ItemsSelectionDialog.py286
-rwxr-xr-xsilx/gui/plot/LegendSelector.py1036
-rw-r--r--silx/gui/plot/MaskToolsWidget.py919
-rw-r--r--silx/gui/plot/PlotInteraction.py1748
-rwxr-xr-xsilx/gui/plot/PlotWidget.py3621
-rw-r--r--silx/gui/plot/PlotWindow.py994
-rw-r--r--silx/gui/plot/PrintPreviewToolButton.py392
-rw-r--r--silx/gui/plot/ROIStatsWidget.py780
-rw-r--r--silx/gui/plot/ScatterMaskToolsWidget.py621
-rw-r--r--silx/gui/plot/ScatterView.py405
-rw-r--r--silx/gui/plot/StackView.py1254
-rw-r--r--silx/gui/plot/StatsWidget.py1661
-rw-r--r--silx/gui/plot/_utils/__init__.py93
-rw-r--r--silx/gui/plot/_utils/panzoom.py292
-rw-r--r--silx/gui/plot/_utils/test/__init__.py43
-rw-r--r--silx/gui/plot/_utils/test/test_dtime_ticklayout.py93
-rw-r--r--silx/gui/plot/_utils/test/test_ticklayout.py92
-rw-r--r--silx/gui/plot/actions/fit.py403
-rw-r--r--silx/gui/plot/actions/histogram.py392
-rw-r--r--silx/gui/plot/actions/io.py818
-rwxr-xr-xsilx/gui/plot/backends/BackendBase.py578
-rwxr-xr-xsilx/gui/plot/backends/BackendMatplotlib.py1544
-rwxr-xr-xsilx/gui/plot/backends/BackendOpenGL.py1420
-rw-r--r--silx/gui/plot/backends/glutils/GLPlotCurve.py1375
-rw-r--r--silx/gui/plot/backends/glutils/GLPlotFrame.py1219
-rw-r--r--silx/gui/plot/items/__init__.py52
-rw-r--r--silx/gui/plot/items/axis.py569
-rw-r--r--silx/gui/plot/items/core.py1734
-rw-r--r--silx/gui/plot/items/curve.py326
-rw-r--r--silx/gui/plot/items/image.py617
-rw-r--r--silx/gui/plot/items/scatter.py973
-rw-r--r--silx/gui/plot/items/shape.py288
-rw-r--r--silx/gui/plot/test/__init__.py92
-rw-r--r--silx/gui/plot/test/testAlphaSlider.py218
-rw-r--r--silx/gui/plot/test/testColorBar.py354
-rw-r--r--silx/gui/plot/test/testCompareImages.py117
-rw-r--r--silx/gui/plot/test/testComplexImageView.py95
-rw-r--r--silx/gui/plot/test/testCurvesROIWidget.py469
-rw-r--r--silx/gui/plot/test/testImageStack.py197
-rw-r--r--silx/gui/plot/test/testImageView.py136
-rw-r--r--silx/gui/plot/test/testInteraction.py89
-rw-r--r--silx/gui/plot/test/testItem.py340
-rw-r--r--silx/gui/plot/test/testLegendSelector.py142
-rw-r--r--silx/gui/plot/test/testLimitConstraints.py125
-rw-r--r--silx/gui/plot/test/testMaskToolsWidget.py316
-rw-r--r--silx/gui/plot/test/testPixelIntensityHistoAction.py157
-rw-r--r--silx/gui/plot/test/testPlotInteraction.py172
-rwxr-xr-xsilx/gui/plot/test/testPlotWidget.py2072
-rw-r--r--silx/gui/plot/test/testPlotWidgetNoBackend.py631
-rw-r--r--silx/gui/plot/test/testPlotWindow.py185
-rw-r--r--silx/gui/plot/test/testRoiStatsWidget.py290
-rw-r--r--silx/gui/plot/test/testSaveAction.py143
-rw-r--r--silx/gui/plot/test/testScatterMaskToolsWidget.py318
-rw-r--r--silx/gui/plot/test/testScatterView.py134
-rw-r--r--silx/gui/plot/test/testStackView.py261
-rw-r--r--silx/gui/plot/test/testStats.py1058
-rw-r--r--silx/gui/plot/test/testUtilsAxis.py214
-rw-r--r--silx/gui/plot/test/utils.py94
-rw-r--r--silx/gui/plot/tools/PositionInfo.py376
-rw-r--r--silx/gui/plot/tools/profile/manager.py1076
-rw-r--r--silx/gui/plot/tools/profile/rois.py1156
-rw-r--r--silx/gui/plot/tools/roi.py1417
-rw-r--r--silx/gui/plot/tools/test/__init__.py52
-rw-r--r--silx/gui/plot/tools/test/testCurveLegendsWidget.py125
-rw-r--r--silx/gui/plot/tools/test/testProfile.py673
-rw-r--r--silx/gui/plot/tools/test/testROI.py694
-rw-r--r--silx/gui/plot/tools/test/testScatterProfileToolBar.py196
-rw-r--r--silx/gui/plot/tools/test/testTools.py147
-rw-r--r--silx/gui/plot/utils/axis.py403
-rw-r--r--silx/gui/plot3d/ParamTreeView.py546
-rw-r--r--silx/gui/plot3d/Plot3DWidget.py460
-rw-r--r--silx/gui/plot3d/SFViewParamTree.py1817
-rw-r--r--silx/gui/plot3d/_model/items.py1760
-rw-r--r--silx/gui/plot3d/actions/io.py336
-rw-r--r--silx/gui/plot3d/actions/mode.py178
-rw-r--r--silx/gui/plot3d/items/core.py779
-rw-r--r--silx/gui/plot3d/items/image.py425
-rw-r--r--silx/gui/plot3d/scene/test/__init__.py43
-rw-r--r--silx/gui/plot3d/scene/test/test_transform.py91
-rw-r--r--silx/gui/plot3d/scene/test/test_utils.py275
-rw-r--r--silx/gui/plot3d/scene/window.py430
-rw-r--r--silx/gui/plot3d/test/__init__.py75
-rw-r--r--silx/gui/plot3d/test/testGL.py84
-rw-r--r--silx/gui/plot3d/test/testScalarFieldView.py139
-rw-r--r--silx/gui/plot3d/test/testSceneWidget.py84
-rw-r--r--silx/gui/plot3d/test/testSceneWidgetPicking.py326
-rw-r--r--silx/gui/plot3d/test/testSceneWindow.py245
-rw-r--r--silx/gui/plot3d/test/testStatsWidget.py216
-rw-r--r--silx/gui/plot3d/tools/GroupPropertiesWidget.py202
-rw-r--r--silx/gui/plot3d/tools/PositionInfoWidget.py219
-rw-r--r--silx/gui/plot3d/tools/test/__init__.py41
-rw-r--r--silx/gui/plot3d/tools/test/testPositionInfoWidget.py101
-rw-r--r--silx/gui/qt/__init__.py60
-rw-r--r--silx/gui/qt/_macosx.py68
-rw-r--r--silx/gui/qt/_pyside_dynamic.py239
-rw-r--r--silx/gui/qt/_pyside_missing.py274
-rw-r--r--silx/gui/qt/_qt.py289
-rw-r--r--silx/gui/qt/_utils.py71
-rw-r--r--silx/gui/qt/inspect.py87
-rw-r--r--silx/gui/test/__init__.py113
-rwxr-xr-xsilx/gui/test/test_colors.py619
-rw-r--r--silx/gui/test/test_console.py91
-rw-r--r--silx/gui/test/test_icons.py158
-rw-r--r--silx/gui/test/test_qt.py201
-rw-r--r--silx/gui/utils/glutils/__init__.py199
-rw-r--r--silx/gui/utils/image.py143
-rw-r--r--silx/gui/utils/matplotlib.py71
-rwxr-xr-xsilx/gui/utils/test/__init__.py56
-rw-r--r--silx/gui/utils/test/test.py76
-rw-r--r--silx/gui/utils/test/test_async.py138
-rw-r--r--silx/gui/utils/test/test_glutils.py66
-rw-r--r--silx/gui/utils/test/test_image.py90
-rwxr-xr-xsilx/gui/utils/test/test_qtutils.py75
-rw-r--r--silx/gui/utils/test/test_testutils.py55
-rw-r--r--silx/gui/utils/testutils.py518
-rw-r--r--silx/gui/widgets/ElidedLabel.py137
-rw-r--r--silx/gui/widgets/FloatEdit.py65
-rw-r--r--silx/gui/widgets/PeriodicTable.py831
-rw-r--r--silx/gui/widgets/PrintGeometryDialog.py222
-rw-r--r--silx/gui/widgets/PrintPreview.py728
-rw-r--r--silx/gui/widgets/RangeSlider.py765
-rw-r--r--silx/gui/widgets/TableWidget.py626
-rw-r--r--silx/gui/widgets/UrlSelectionTable.py172
-rw-r--r--silx/gui/widgets/WaitingPushButton.py245
-rw-r--r--silx/gui/widgets/test/__init__.py59
-rw-r--r--silx/gui/widgets/test/test_boxlayoutdockwidget.py83
-rw-r--r--silx/gui/widgets/test/test_elidedlabel.py111
-rw-r--r--silx/gui/widgets/test/test_flowlayout.py77
-rw-r--r--silx/gui/widgets/test/test_framebrowser.py73
-rw-r--r--silx/gui/widgets/test/test_hierarchicaltableview.py117
-rw-r--r--silx/gui/widgets/test/test_legendiconwidget.py74
-rw-r--r--silx/gui/widgets/test/test_periodictable.py163
-rw-r--r--silx/gui/widgets/test/test_printpreview.py74
-rw-r--r--silx/gui/widgets/test/test_rangeslider.py114
-rw-r--r--silx/gui/widgets/test/test_tablewidget.py61
-rw-r--r--silx/gui/widgets/test/test_threadpoolpushbutton.py135
-rw-r--r--silx/image/marchingsquares/setup.py51
-rw-r--r--silx/image/marchingsquares/test/__init__.py40
-rw-r--r--silx/image/marchingsquares/test/test_funcapi.py99
-rw-r--r--silx/image/marchingsquares/test/test_mergeimpl.py272
-rw-r--r--silx/image/test/__init__.py48
-rw-r--r--silx/image/test/test_bb.py86
-rw-r--r--silx/image/test/test_bilinear.py178
-rw-r--r--silx/image/test/test_medianfilter.py76
-rw-r--r--silx/image/test/test_shapes.py366
-rw-r--r--silx/image/test/test_tomography.py66
-rw-r--r--silx/io/commonh5.py1083
-rw-r--r--silx/io/convert.py343
-rw-r--r--silx/io/dictdump.py842
-rwxr-xr-xsilx/io/fabioh5.py1051
-rw-r--r--silx/io/h5py_utils.py317
-rw-r--r--silx/io/nxdata/_utils.py184
-rw-r--r--silx/io/nxdata/parse.py997
-rw-r--r--silx/io/nxdata/write.py203
-rw-r--r--silx/io/specfile.pyx1268
-rw-r--r--silx/io/spech5.py883
-rw-r--r--silx/io/test/__init__.py61
-rw-r--r--silx/io/test/test_commonh5.py295
-rw-r--r--silx/io/test/test_dictdump.py1025
-rwxr-xr-xsilx/io/test/test_fabioh5.py629
-rw-r--r--silx/io/test/test_h5py_utils.py399
-rw-r--r--silx/io/test/test_nxdata.py579
-rw-r--r--silx/io/test/test_octaveh5.py165
-rw-r--r--silx/io/test/test_rawh5.py96
-rw-r--r--silx/io/test/test_specfile.py433
-rw-r--r--silx/io/test/test_specfilewrapper.py206
-rw-r--r--silx/io/test/test_spech5.py881
-rw-r--r--silx/io/test/test_spectoh5.py194
-rw-r--r--silx/io/test/test_url.py228
-rw-r--r--silx/io/test/test_utils.py888
-rw-r--r--silx/io/url.py390
-rw-r--r--silx/io/utils.py1142
-rw-r--r--silx/math/colormap.pyx559
-rw-r--r--silx/math/fft/test/__init__.py25
-rw-r--r--silx/math/fft/test/test_fft.py270
-rw-r--r--silx/math/fit/fitmanager.py1087
-rw-r--r--silx/math/fit/fittheories.py1374
-rw-r--r--silx/math/fit/test/__init__.py46
-rw-r--r--silx/math/fit/test/test_bgtheories.py169
-rw-r--r--silx/math/fit/test/test_filters.py137
-rw-r--r--silx/math/fit/test/test_fit.py387
-rw-r--r--silx/math/fit/test/test_fitmanager.py513
-rw-r--r--silx/math/fit/test/test_functions.py272
-rw-r--r--silx/math/fit/test/test_peaks.py146
-rw-r--r--silx/math/medianfilter/test/__init__.py36
-rw-r--r--silx/math/medianfilter/test/benchmark.py122
-rw-r--r--silx/math/medianfilter/test/test_medianfilter.py740
-rw-r--r--silx/math/setup.py99
-rw-r--r--silx/math/test/__init__.py58
-rw-r--r--silx/math/test/benchmark_combo.py203
-rw-r--r--silx/math/test/test_HistogramndLut_nominal.py587
-rw-r--r--silx/math/test/test_calibration.py158
-rw-r--r--silx/math/test/test_colormap.py266
-rw-r--r--silx/math/test/test_combo.py218
-rw-r--r--silx/math/test/test_histogramnd_error.py535
-rw-r--r--silx/math/test/test_histogramnd_nominal.py949
-rw-r--r--silx/math/test/test_histogramnd_vs_np.py848
-rw-r--r--silx/math/test/test_interpolate.py136
-rw-r--r--silx/math/test/test_marchingcubes.py188
-rw-r--r--silx/opencl/codec/test/__init__.py37
-rw-r--r--silx/opencl/codec/test/test_byte_offset.py315
-rw-r--r--silx/opencl/common.py691
-rw-r--r--silx/opencl/test/__init__.py68
-rw-r--r--silx/opencl/test/test_addition.py154
-rw-r--r--silx/opencl/test/test_array_utils.py161
-rw-r--r--silx/opencl/test/test_backprojection.py231
-rw-r--r--silx/opencl/test/test_convolution.py265
-rw-r--r--silx/opencl/test/test_doubleword.py258
-rw-r--r--silx/opencl/test/test_image.py137
-rw-r--r--silx/opencl/test/test_kahan.py269
-rw-r--r--silx/opencl/test/test_linalg.py216
-rw-r--r--silx/opencl/test/test_medfilt.py175
-rw-r--r--silx/opencl/test/test_projection.py131
-rw-r--r--silx/opencl/test/test_sparse.py203
-rw-r--r--silx/opencl/test/test_stats.py116
-rw-r--r--silx/resources/gui/icons/compare-align-auto.svg4
-rw-r--r--silx/resources/gui/icons/compare-align-center.svg4
-rw-r--r--silx/resources/gui/icons/compare-align-origin.svg4
-rw-r--r--silx/resources/gui/icons/compare-align-stretch.svg4
-rw-r--r--silx/resources/gui/icons/math-peak-search.svg2
-rw-r--r--silx/resources/gui/icons/remove.svg2
-rw-r--r--silx/resources/gui/icons/zoom-back.svg2
-rw-r--r--silx/resources/gui/icons/zoom-in.svg2
-rw-r--r--silx/resources/gui/icons/zoom-original.svg2
-rw-r--r--silx/resources/gui/icons/zoom-out.svg2
-rw-r--r--silx/resources/gui/icons/zoom.svg2
-rw-r--r--silx/setup.py54
-rw-r--r--silx/sx/_plot.py623
-rw-r--r--silx/test/__init__.py104
-rw-r--r--silx/test/test_resources.py200
-rw-r--r--silx/test/test_sx.py292
-rw-r--r--silx/test/test_version.py49
-rw-r--r--silx/test/utils.py204
-rw-r--r--silx/third_party/setup.py49
-rw-r--r--silx/utils/ExternalResources.py320
-rw-r--r--silx/utils/_have_openmp.pxd49
-rw-r--r--silx/utils/array_like.py596
-rw-r--r--silx/utils/debug.py103
-rw-r--r--silx/utils/html.py60
-rw-r--r--silx/utils/proxy.py241
-rwxr-xr-xsilx/utils/test/__init__.py59
-rw-r--r--silx/utils/test/test_array_like.py445
-rw-r--r--silx/utils/test/test_debug.py99
-rw-r--r--silx/utils/test/test_deprecation.py107
-rw-r--r--silx/utils/test/test_enum.py96
-rw-r--r--silx/utils/test/test_external_resources.py99
-rw-r--r--silx/utils/test/test_html.py61
-rw-r--r--silx/utils/test/test_launcher.py204
-rw-r--r--silx/utils/test/test_number.py186
-rw-r--r--silx/utils/test/test_proxy.py344
-rw-r--r--silx/utils/test/test_retry.py179
-rwxr-xr-xsilx/utils/test/test_testutils.py105
-rw-r--r--silx/utils/test/test_weakref.py330
-rwxr-xr-xsilx/utils/testutils.py333
-rw-r--r--src/silx/__init__.py58
-rw-r--r--src/silx/__main__.py (renamed from silx/__main__.py)0
-rw-r--r--src/silx/_config.py (renamed from silx/_config.py)0
-rw-r--r--src/silx/_version.py120
-rw-r--r--src/silx/app/__init__.py (renamed from silx/app/__init__.py)0
-rw-r--r--src/silx/app/convert.py548
-rw-r--r--src/silx/app/setup.py (renamed from silx/app/setup.py)0
-rw-r--r--src/silx/app/test/__init__.py24
-rw-r--r--src/silx/app/test/test_convert.py156
-rw-r--r--src/silx/app/test_.py45
-rw-r--r--src/silx/app/view/About.py258
-rw-r--r--src/silx/app/view/ApplicationContext.py195
-rw-r--r--src/silx/app/view/CustomNxdataWidget.py1002
-rw-r--r--src/silx/app/view/DataPanel.py (renamed from silx/app/view/DataPanel.py)0
-rw-r--r--src/silx/app/view/Viewer.py962
-rw-r--r--src/silx/app/view/__init__.py (renamed from silx/app/view/__init__.py)0
-rw-r--r--src/silx/app/view/main.py186
-rw-r--r--src/silx/app/view/setup.py (renamed from silx/app/view/setup.py)0
-rw-r--r--src/silx/app/view/test/__init__.py24
-rw-r--r--src/silx/app/view/test/test_launcher.py140
-rw-r--r--src/silx/app/view/test/test_view.py388
-rw-r--r--src/silx/app/view/utils.py (renamed from silx/app/view/utils.py)0
-rw-r--r--src/silx/conftest.py130
-rw-r--r--src/silx/gui/__init__.py (renamed from silx/gui/__init__.py)0
-rw-r--r--src/silx/gui/_glutils/Context.py (renamed from silx/gui/_glutils/Context.py)0
-rw-r--r--src/silx/gui/_glutils/FramebufferTexture.py168
-rw-r--r--src/silx/gui/_glutils/OpenGLWidget.py422
-rw-r--r--src/silx/gui/_glutils/Program.py (renamed from silx/gui/_glutils/Program.py)0
-rw-r--r--src/silx/gui/_glutils/Texture.py (renamed from silx/gui/_glutils/Texture.py)0
-rw-r--r--src/silx/gui/_glutils/VertexBuffer.py (renamed from silx/gui/_glutils/VertexBuffer.py)0
-rw-r--r--src/silx/gui/_glutils/__init__.py (renamed from silx/gui/_glutils/__init__.py)0
-rw-r--r--src/silx/gui/_glutils/font.py156
-rw-r--r--src/silx/gui/_glutils/gl.py (renamed from silx/gui/_glutils/gl.py)0
-rw-r--r--src/silx/gui/_glutils/utils.py123
-rwxr-xr-xsrc/silx/gui/colors.py1036
-rw-r--r--src/silx/gui/conftest.py5
-rw-r--r--src/silx/gui/console.py202
-rw-r--r--src/silx/gui/data/ArrayTableModel.py650
-rw-r--r--src/silx/gui/data/ArrayTableWidget.py492
-rw-r--r--src/silx/gui/data/DataViewer.py (renamed from silx/gui/data/DataViewer.py)0
-rw-r--r--src/silx/gui/data/DataViewerFrame.py (renamed from silx/gui/data/DataViewerFrame.py)0
-rw-r--r--src/silx/gui/data/DataViewerSelector.py (renamed from silx/gui/data/DataViewerSelector.py)0
-rw-r--r--src/silx/gui/data/DataViews.py (renamed from silx/gui/data/DataViews.py)0
-rw-r--r--src/silx/gui/data/Hdf5TableView.py634
-rw-r--r--src/silx/gui/data/HexaTableView.py272
-rw-r--r--src/silx/gui/data/NXdataWidgets.py1086
-rw-r--r--src/silx/gui/data/NumpyAxesSelector.py (renamed from silx/gui/data/NumpyAxesSelector.py)0
-rw-r--r--src/silx/gui/data/RecordTableView.py439
-rw-r--r--src/silx/gui/data/TextFormatter.py386
-rw-r--r--src/silx/gui/data/_RecordPlot.py (renamed from silx/gui/data/_RecordPlot.py)0
-rw-r--r--src/silx/gui/data/_VolumeWindow.py (renamed from silx/gui/data/_VolumeWindow.py)0
-rw-r--r--src/silx/gui/data/__init__.py (renamed from silx/gui/data/__init__.py)0
-rw-r--r--src/silx/gui/data/setup.py (renamed from silx/gui/data/setup.py)0
-rw-r--r--src/silx/gui/data/test/__init__.py24
-rw-r--r--src/silx/gui/data/test/test_arraywidget.py316
-rw-r--r--src/silx/gui/data/test/test_dataviewer.py304
-rw-r--r--src/silx/gui/data/test/test_numpyaxesselector.py150
-rw-r--r--src/silx/gui/data/test/test_textformatter.py199
-rw-r--r--src/silx/gui/dialog/AbstractDataFileDialog.py1731
-rw-r--r--src/silx/gui/dialog/ColormapDialog.py1775
-rw-r--r--src/silx/gui/dialog/DataFileDialog.py340
-rw-r--r--src/silx/gui/dialog/DatasetDialog.py122
-rw-r--r--src/silx/gui/dialog/FileTypeComboBox.py (renamed from silx/gui/dialog/FileTypeComboBox.py)0
-rw-r--r--src/silx/gui/dialog/GroupDialog.py230
-rw-r--r--src/silx/gui/dialog/ImageFileDialog.py354
-rw-r--r--src/silx/gui/dialog/SafeFileIconProvider.py (renamed from silx/gui/dialog/SafeFileIconProvider.py)0
-rw-r--r--src/silx/gui/dialog/SafeFileSystemModel.py802
-rw-r--r--src/silx/gui/dialog/__init__.py (renamed from silx/gui/dialog/__init__.py)0
-rw-r--r--src/silx/gui/dialog/setup.py (renamed from silx/gui/dialog/setup.py)0
-rw-r--r--src/silx/gui/dialog/test/__init__.py24
-rw-r--r--src/silx/gui/dialog/test/test_colormapdialog.py395
-rw-r--r--src/silx/gui/dialog/test/test_datafiledialog.py924
-rw-r--r--src/silx/gui/dialog/test/test_imagefiledialog.py772
-rw-r--r--src/silx/gui/dialog/utils.py99
-rw-r--r--src/silx/gui/fit/BackgroundWidget.py534
-rw-r--r--src/silx/gui/fit/FitConfig.py543
-rw-r--r--src/silx/gui/fit/FitWidget.py751
-rw-r--r--src/silx/gui/fit/FitWidgets.py555
-rw-r--r--src/silx/gui/fit/Parameters.py882
-rw-r--r--src/silx/gui/fit/__init__.py (renamed from silx/gui/fit/__init__.py)0
-rw-r--r--src/silx/gui/fit/setup.py (renamed from silx/gui/fit/setup.py)0
-rw-r--r--src/silx/gui/fit/test/__init__.py24
-rw-r--r--src/silx/gui/fit/test/testBackgroundWidget.py72
-rw-r--r--src/silx/gui/fit/test/testFitConfig.py84
-rw-r--r--src/silx/gui/fit/test/testFitWidget.py124
-rw-r--r--src/silx/gui/hdf5/Hdf5Formatter.py240
-rw-r--r--src/silx/gui/hdf5/Hdf5HeaderView.py184
-rwxr-xr-xsrc/silx/gui/hdf5/Hdf5Item.py (renamed from silx/gui/hdf5/Hdf5Item.py)0
-rw-r--r--src/silx/gui/hdf5/Hdf5LoadingItem.py (renamed from silx/gui/hdf5/Hdf5LoadingItem.py)0
-rw-r--r--src/silx/gui/hdf5/Hdf5Node.py (renamed from silx/gui/hdf5/Hdf5Node.py)0
-rw-r--r--src/silx/gui/hdf5/Hdf5TreeModel.py742
-rw-r--r--src/silx/gui/hdf5/Hdf5TreeView.py269
-rw-r--r--src/silx/gui/hdf5/NexusSortFilterProxyModel.py (renamed from silx/gui/hdf5/NexusSortFilterProxyModel.py)0
-rw-r--r--src/silx/gui/hdf5/__init__.py (renamed from silx/gui/hdf5/__init__.py)0
-rw-r--r--src/silx/gui/hdf5/_utils.py461
-rw-r--r--src/silx/gui/hdf5/setup.py (renamed from silx/gui/hdf5/setup.py)0
-rw-r--r--src/silx/gui/hdf5/test/__init__.py24
-rwxr-xr-xsrc/silx/gui/hdf5/test/test_hdf5.py1092
-rw-r--r--src/silx/gui/icons.py (renamed from silx/gui/icons.py)0
-rw-r--r--src/silx/gui/plot/AlphaSlider.py300
-rw-r--r--src/silx/gui/plot/ColorBar.py883
-rw-r--r--src/silx/gui/plot/Colormap.py (renamed from silx/gui/plot/Colormap.py)0
-rw-r--r--src/silx/gui/plot/ColormapDialog.py (renamed from silx/gui/plot/ColormapDialog.py)0
-rw-r--r--src/silx/gui/plot/Colors.py (renamed from silx/gui/plot/Colors.py)0
-rw-r--r--src/silx/gui/plot/CompareImages.py1259
-rw-r--r--src/silx/gui/plot/ComplexImageView.py518
-rw-r--r--src/silx/gui/plot/CurvesROIWidget.py1581
-rw-r--r--src/silx/gui/plot/ImageStack.py640
-rw-r--r--src/silx/gui/plot/ImageView.py1057
-rw-r--r--src/silx/gui/plot/Interaction.py (renamed from silx/gui/plot/Interaction.py)0
-rw-r--r--src/silx/gui/plot/ItemsSelectionDialog.py286
-rwxr-xr-xsrc/silx/gui/plot/LegendSelector.py1039
-rw-r--r--src/silx/gui/plot/LimitsHistory.py (renamed from silx/gui/plot/LimitsHistory.py)0
-rw-r--r--src/silx/gui/plot/MaskToolsWidget.py919
-rw-r--r--src/silx/gui/plot/PlotActions.py (renamed from silx/gui/plot/PlotActions.py)0
-rw-r--r--src/silx/gui/plot/PlotEvents.py (renamed from silx/gui/plot/PlotEvents.py)0
-rw-r--r--src/silx/gui/plot/PlotInteraction.py1746
-rw-r--r--src/silx/gui/plot/PlotToolButtons.py (renamed from silx/gui/plot/PlotToolButtons.py)0
-rw-r--r--src/silx/gui/plot/PlotTools.py (renamed from silx/gui/plot/PlotTools.py)0
-rwxr-xr-xsrc/silx/gui/plot/PlotWidget.py3628
-rw-r--r--src/silx/gui/plot/PlotWindow.py993
-rw-r--r--src/silx/gui/plot/PrintPreviewToolButton.py388
-rw-r--r--src/silx/gui/plot/Profile.py (renamed from silx/gui/plot/Profile.py)0
-rw-r--r--src/silx/gui/plot/ProfileMainWindow.py (renamed from silx/gui/plot/ProfileMainWindow.py)0
-rw-r--r--src/silx/gui/plot/ROIStatsWidget.py780
-rw-r--r--src/silx/gui/plot/ScatterMaskToolsWidget.py621
-rw-r--r--src/silx/gui/plot/ScatterView.py404
-rw-r--r--src/silx/gui/plot/StackView.py1254
-rw-r--r--src/silx/gui/plot/StatsWidget.py1658
-rw-r--r--src/silx/gui/plot/_BaseMaskToolsWidget.py (renamed from silx/gui/plot/_BaseMaskToolsWidget.py)0
-rw-r--r--src/silx/gui/plot/__init__.py (renamed from silx/gui/plot/__init__.py)0
-rw-r--r--src/silx/gui/plot/_utils/__init__.py92
-rw-r--r--src/silx/gui/plot/_utils/delaunay.py (renamed from silx/gui/plot/_utils/delaunay.py)0
-rw-r--r--src/silx/gui/plot/_utils/dtime_ticklayout.py (renamed from silx/gui/plot/_utils/dtime_ticklayout.py)0
-rw-r--r--src/silx/gui/plot/_utils/panzoom.py325
-rw-r--r--src/silx/gui/plot/_utils/setup.py (renamed from silx/gui/plot/_utils/setup.py)0
-rw-r--r--src/silx/gui/plot/_utils/test/__init__.py24
-rw-r--r--src/silx/gui/plot/_utils/test/test_dtime_ticklayout.py79
-rw-r--r--src/silx/gui/plot/_utils/test/test_ticklayout.py81
-rw-r--r--src/silx/gui/plot/_utils/ticklayout.py (renamed from silx/gui/plot/_utils/ticklayout.py)0
-rw-r--r--src/silx/gui/plot/actions/PlotAction.py (renamed from silx/gui/plot/actions/PlotAction.py)0
-rw-r--r--src/silx/gui/plot/actions/PlotToolAction.py (renamed from silx/gui/plot/actions/PlotToolAction.py)0
-rw-r--r--src/silx/gui/plot/actions/__init__.py (renamed from silx/gui/plot/actions/__init__.py)0
-rwxr-xr-xsrc/silx/gui/plot/actions/control.py (renamed from silx/gui/plot/actions/control.py)0
-rw-r--r--src/silx/gui/plot/actions/fit.py485
-rw-r--r--src/silx/gui/plot/actions/histogram.py542
-rw-r--r--src/silx/gui/plot/actions/io.py819
-rw-r--r--src/silx/gui/plot/actions/medfilt.py (renamed from silx/gui/plot/actions/medfilt.py)0
-rw-r--r--src/silx/gui/plot/actions/mode.py (renamed from silx/gui/plot/actions/mode.py)0
-rwxr-xr-xsrc/silx/gui/plot/backends/BackendBase.py568
-rwxr-xr-xsrc/silx/gui/plot/backends/BackendMatplotlib.py1557
-rwxr-xr-xsrc/silx/gui/plot/backends/BackendOpenGL.py1420
-rw-r--r--src/silx/gui/plot/backends/__init__.py (renamed from silx/gui/plot/backends/__init__.py)0
-rw-r--r--src/silx/gui/plot/backends/glutils/GLPlotCurve.py1380
-rw-r--r--src/silx/gui/plot/backends/glutils/GLPlotFrame.py1210
-rw-r--r--src/silx/gui/plot/backends/glutils/GLPlotImage.py (renamed from silx/gui/plot/backends/glutils/GLPlotImage.py)0
-rw-r--r--src/silx/gui/plot/backends/glutils/GLPlotItem.py (renamed from silx/gui/plot/backends/glutils/GLPlotItem.py)0
-rw-r--r--src/silx/gui/plot/backends/glutils/GLPlotTriangles.py (renamed from silx/gui/plot/backends/glutils/GLPlotTriangles.py)0
-rw-r--r--src/silx/gui/plot/backends/glutils/GLSupport.py (renamed from silx/gui/plot/backends/glutils/GLSupport.py)0
-rw-r--r--src/silx/gui/plot/backends/glutils/GLText.py (renamed from silx/gui/plot/backends/glutils/GLText.py)0
-rw-r--r--src/silx/gui/plot/backends/glutils/GLTexture.py (renamed from silx/gui/plot/backends/glutils/GLTexture.py)0
-rw-r--r--src/silx/gui/plot/backends/glutils/PlotImageFile.py (renamed from silx/gui/plot/backends/glutils/PlotImageFile.py)0
-rw-r--r--src/silx/gui/plot/backends/glutils/__init__.py (renamed from silx/gui/plot/backends/glutils/__init__.py)0
-rw-r--r--src/silx/gui/plot/items/__init__.py53
-rw-r--r--src/silx/gui/plot/items/_arc_roi.py (renamed from silx/gui/plot/items/_arc_roi.py)0
-rw-r--r--src/silx/gui/plot/items/_pick.py (renamed from silx/gui/plot/items/_pick.py)0
-rw-r--r--src/silx/gui/plot/items/_roi_base.py (renamed from silx/gui/plot/items/_roi_base.py)0
-rw-r--r--src/silx/gui/plot/items/axis.py560
-rw-r--r--src/silx/gui/plot/items/complex.py (renamed from silx/gui/plot/items/complex.py)0
-rw-r--r--src/silx/gui/plot/items/core.py1733
-rw-r--r--src/silx/gui/plot/items/curve.py325
-rw-r--r--src/silx/gui/plot/items/histogram.py (renamed from silx/gui/plot/items/histogram.py)0
-rw-r--r--src/silx/gui/plot/items/image.py641
-rw-r--r--src/silx/gui/plot/items/image_aggregated.py229
-rwxr-xr-xsrc/silx/gui/plot/items/marker.py (renamed from silx/gui/plot/items/marker.py)0
-rw-r--r--src/silx/gui/plot/items/roi.py (renamed from silx/gui/plot/items/roi.py)0
-rw-r--r--src/silx/gui/plot/items/scatter.py1002
-rw-r--r--src/silx/gui/plot/items/shape.py287
-rw-r--r--src/silx/gui/plot/matplotlib/Colormap.py (renamed from silx/gui/plot/matplotlib/Colormap.py)0
-rw-r--r--src/silx/gui/plot/matplotlib/__init__.py (renamed from silx/gui/plot/matplotlib/__init__.py)0
-rw-r--r--src/silx/gui/plot/setup.py (renamed from silx/gui/plot/setup.py)0
-rw-r--r--src/silx/gui/plot/stats/__init__.py (renamed from silx/gui/plot/stats/__init__.py)0
-rw-r--r--src/silx/gui/plot/stats/stats.py (renamed from silx/gui/plot/stats/stats.py)0
-rw-r--r--src/silx/gui/plot/stats/statshandler.py (renamed from silx/gui/plot/stats/statshandler.py)0
-rw-r--r--src/silx/gui/plot/test/__init__.py24
-rw-r--r--src/silx/gui/plot/test/testAlphaSlider.py204
-rw-r--r--src/silx/gui/plot/test/testColorBar.py340
-rw-r--r--src/silx/gui/plot/test/testCompareImages.py106
-rw-r--r--src/silx/gui/plot/test/testComplexImageView.py84
-rw-r--r--src/silx/gui/plot/test/testCurvesROIWidget.py465
-rw-r--r--src/silx/gui/plot/test/testImageStack.py186
-rw-r--r--src/silx/gui/plot/test/testImageView.py194
-rw-r--r--src/silx/gui/plot/test/testInteraction.py78
-rw-r--r--src/silx/gui/plot/test/testItem.py360
-rw-r--r--src/silx/gui/plot/test/testLegendSelector.py130
-rw-r--r--src/silx/gui/plot/test/testLimitConstraints.py114
-rw-r--r--src/silx/gui/plot/test/testMaskToolsWidget.py306
-rw-r--r--src/silx/gui/plot/test/testPixelIntensityHistoAction.py145
-rw-r--r--src/silx/gui/plot/test/testPlotActions.py110
-rw-r--r--src/silx/gui/plot/test/testPlotInteraction.py160
-rwxr-xr-xsrc/silx/gui/plot/test/testPlotWidget.py2113
-rw-r--r--src/silx/gui/plot/test/testPlotWidgetNoBackend.py618
-rw-r--r--src/silx/gui/plot/test/testPlotWindow.py174
-rw-r--r--src/silx/gui/plot/test/testRoiStatsWidget.py277
-rw-r--r--src/silx/gui/plot/test/testSaveAction.py132
-rw-r--r--src/silx/gui/plot/test/testScatterMaskToolsWidget.py306
-rw-r--r--src/silx/gui/plot/test/testScatterView.py123
-rw-r--r--src/silx/gui/plot/test/testStackView.py248
-rw-r--r--src/silx/gui/plot/test/testStats.py1047
-rw-r--r--src/silx/gui/plot/test/testUtilsAxis.py203
-rw-r--r--src/silx/gui/plot/test/utils.py93
-rw-r--r--src/silx/gui/plot/tools/CurveLegendsWidget.py (renamed from silx/gui/plot/tools/CurveLegendsWidget.py)0
-rw-r--r--src/silx/gui/plot/tools/LimitsToolBar.py (renamed from silx/gui/plot/tools/LimitsToolBar.py)0
-rw-r--r--src/silx/gui/plot/tools/PositionInfo.py373
-rw-r--r--src/silx/gui/plot/tools/RadarView.py (renamed from silx/gui/plot/tools/RadarView.py)0
-rw-r--r--src/silx/gui/plot/tools/__init__.py (renamed from silx/gui/plot/tools/__init__.py)0
-rw-r--r--src/silx/gui/plot/tools/profile/ScatterProfileToolBar.py (renamed from silx/gui/plot/tools/profile/ScatterProfileToolBar.py)0
-rw-r--r--src/silx/gui/plot/tools/profile/__init__.py (renamed from silx/gui/plot/tools/profile/__init__.py)0
-rw-r--r--src/silx/gui/plot/tools/profile/core.py (renamed from silx/gui/plot/tools/profile/core.py)0
-rw-r--r--src/silx/gui/plot/tools/profile/editors.py (renamed from silx/gui/plot/tools/profile/editors.py)0
-rw-r--r--src/silx/gui/plot/tools/profile/manager.py1079
-rw-r--r--src/silx/gui/plot/tools/profile/rois.py1156
-rw-r--r--src/silx/gui/plot/tools/profile/toolbar.py (renamed from silx/gui/plot/tools/profile/toolbar.py)0
-rw-r--r--src/silx/gui/plot/tools/roi.py1417
-rw-r--r--src/silx/gui/plot/tools/test/__init__.py24
-rw-r--r--src/silx/gui/plot/tools/test/testCurveLegendsWidget.py113
-rw-r--r--src/silx/gui/plot/tools/test/testProfile.py654
-rw-r--r--src/silx/gui/plot/tools/test/testROI.py682
-rw-r--r--src/silx/gui/plot/tools/test/testScatterProfileToolBar.py184
-rw-r--r--src/silx/gui/plot/tools/test/testTools.py135
-rw-r--r--src/silx/gui/plot/tools/toolbars.py (renamed from silx/gui/plot/tools/toolbars.py)0
-rw-r--r--src/silx/gui/plot/utils/__init__.py (renamed from silx/gui/plot/utils/__init__.py)0
-rw-r--r--src/silx/gui/plot/utils/axis.py398
-rw-r--r--src/silx/gui/plot/utils/intersections.py (renamed from silx/gui/plot/utils/intersections.py)0
-rw-r--r--src/silx/gui/plot3d/ParamTreeView.py522
-rw-r--r--src/silx/gui/plot3d/Plot3DWidget.py463
-rw-r--r--src/silx/gui/plot3d/Plot3DWindow.py (renamed from silx/gui/plot3d/Plot3DWindow.py)0
-rw-r--r--src/silx/gui/plot3d/SFViewParamTree.py1814
-rw-r--r--src/silx/gui/plot3d/ScalarFieldView.py (renamed from silx/gui/plot3d/ScalarFieldView.py)0
-rw-r--r--src/silx/gui/plot3d/SceneWidget.py (renamed from silx/gui/plot3d/SceneWidget.py)0
-rw-r--r--src/silx/gui/plot3d/SceneWindow.py (renamed from silx/gui/plot3d/SceneWindow.py)0
-rw-r--r--src/silx/gui/plot3d/__init__.py (renamed from silx/gui/plot3d/__init__.py)0
-rw-r--r--src/silx/gui/plot3d/_model/__init__.py (renamed from silx/gui/plot3d/_model/__init__.py)0
-rw-r--r--src/silx/gui/plot3d/_model/core.py (renamed from silx/gui/plot3d/_model/core.py)0
-rw-r--r--src/silx/gui/plot3d/_model/items.py1759
-rw-r--r--src/silx/gui/plot3d/_model/model.py (renamed from silx/gui/plot3d/_model/model.py)0
-rw-r--r--src/silx/gui/plot3d/actions/Plot3DAction.py (renamed from silx/gui/plot3d/actions/Plot3DAction.py)0
-rw-r--r--src/silx/gui/plot3d/actions/__init__.py (renamed from silx/gui/plot3d/actions/__init__.py)0
-rw-r--r--src/silx/gui/plot3d/actions/io.py337
-rw-r--r--src/silx/gui/plot3d/actions/mode.py178
-rw-r--r--src/silx/gui/plot3d/actions/viewpoint.py (renamed from silx/gui/plot3d/actions/viewpoint.py)0
-rw-r--r--src/silx/gui/plot3d/conftest.py5
-rw-r--r--src/silx/gui/plot3d/items/__init__.py (renamed from silx/gui/plot3d/items/__init__.py)0
-rw-r--r--src/silx/gui/plot3d/items/_pick.py (renamed from silx/gui/plot3d/items/_pick.py)0
-rw-r--r--src/silx/gui/plot3d/items/clipplane.py (renamed from silx/gui/plot3d/items/clipplane.py)0
-rw-r--r--src/silx/gui/plot3d/items/core.py778
-rw-r--r--src/silx/gui/plot3d/items/image.py425
-rw-r--r--src/silx/gui/plot3d/items/mesh.py (renamed from silx/gui/plot3d/items/mesh.py)0
-rw-r--r--src/silx/gui/plot3d/items/mixins.py (renamed from silx/gui/plot3d/items/mixins.py)0
-rw-r--r--src/silx/gui/plot3d/items/scatter.py (renamed from silx/gui/plot3d/items/scatter.py)0
-rw-r--r--src/silx/gui/plot3d/items/volume.py (renamed from silx/gui/plot3d/items/volume.py)0
-rw-r--r--src/silx/gui/plot3d/scene/__init__.py (renamed from silx/gui/plot3d/scene/__init__.py)0
-rw-r--r--src/silx/gui/plot3d/scene/axes.py (renamed from silx/gui/plot3d/scene/axes.py)0
-rw-r--r--src/silx/gui/plot3d/scene/camera.py (renamed from silx/gui/plot3d/scene/camera.py)0
-rw-r--r--src/silx/gui/plot3d/scene/core.py (renamed from silx/gui/plot3d/scene/core.py)0
-rw-r--r--src/silx/gui/plot3d/scene/cutplane.py (renamed from silx/gui/plot3d/scene/cutplane.py)0
-rw-r--r--src/silx/gui/plot3d/scene/event.py (renamed from silx/gui/plot3d/scene/event.py)0
-rw-r--r--src/silx/gui/plot3d/scene/function.py (renamed from silx/gui/plot3d/scene/function.py)0
-rw-r--r--src/silx/gui/plot3d/scene/interaction.py (renamed from silx/gui/plot3d/scene/interaction.py)0
-rw-r--r--src/silx/gui/plot3d/scene/primitives.py (renamed from silx/gui/plot3d/scene/primitives.py)0
-rw-r--r--src/silx/gui/plot3d/scene/test/__init__.py24
-rw-r--r--src/silx/gui/plot3d/scene/test/test_transform.py80
-rw-r--r--src/silx/gui/plot3d/scene/test/test_utils.py258
-rw-r--r--src/silx/gui/plot3d/scene/text.py (renamed from silx/gui/plot3d/scene/text.py)0
-rw-r--r--src/silx/gui/plot3d/scene/transform.py (renamed from silx/gui/plot3d/scene/transform.py)0
-rw-r--r--src/silx/gui/plot3d/scene/utils.py (renamed from silx/gui/plot3d/scene/utils.py)0
-rw-r--r--src/silx/gui/plot3d/scene/viewport.py (renamed from silx/gui/plot3d/scene/viewport.py)0
-rw-r--r--src/silx/gui/plot3d/scene/window.py433
-rw-r--r--src/silx/gui/plot3d/setup.py (renamed from silx/gui/plot3d/setup.py)0
-rw-r--r--src/silx/gui/plot3d/test/__init__.py25
-rw-r--r--src/silx/gui/plot3d/test/testGL.py73
-rw-r--r--src/silx/gui/plot3d/test/testScalarFieldView.py128
-rw-r--r--src/silx/gui/plot3d/test/testSceneWidget.py72
-rw-r--r--src/silx/gui/plot3d/test/testSceneWidgetPicking.py314
-rw-r--r--src/silx/gui/plot3d/test/testSceneWindow.py233
-rw-r--r--src/silx/gui/plot3d/test/testStatsWidget.py201
-rw-r--r--src/silx/gui/plot3d/tools/GroupPropertiesWidget.py202
-rw-r--r--src/silx/gui/plot3d/tools/PositionInfoWidget.py225
-rw-r--r--src/silx/gui/plot3d/tools/ViewpointTools.py (renamed from silx/gui/plot3d/tools/ViewpointTools.py)0
-rw-r--r--src/silx/gui/plot3d/tools/__init__.py (renamed from silx/gui/plot3d/tools/__init__.py)0
-rw-r--r--src/silx/gui/plot3d/tools/test/__init__.py25
-rw-r--r--src/silx/gui/plot3d/tools/test/testPositionInfoWidget.py89
-rw-r--r--src/silx/gui/plot3d/tools/toolbars.py (renamed from silx/gui/plot3d/tools/toolbars.py)0
-rw-r--r--src/silx/gui/plot3d/utils/__init__.py (renamed from silx/gui/plot3d/utils/__init__.py)0
-rw-r--r--src/silx/gui/plot3d/utils/mng.py (renamed from silx/gui/plot3d/utils/mng.py)0
-rw-r--r--src/silx/gui/printer.py (renamed from silx/gui/printer.py)0
-rw-r--r--src/silx/gui/qt/__init__.py54
-rw-r--r--src/silx/gui/qt/_pyside_dynamic.py235
-rw-r--r--src/silx/gui/qt/_qt.py232
-rw-r--r--src/silx/gui/qt/_utils.py68
-rw-r--r--src/silx/gui/qt/inspect.py75
-rw-r--r--src/silx/gui/setup.py (renamed from silx/gui/setup.py)0
-rw-r--r--src/silx/gui/test/__init__.py24
-rwxr-xr-xsrc/silx/gui/test/test_colors.py603
-rw-r--r--src/silx/gui/test/test_console.py75
-rw-r--r--src/silx/gui/test/test_icons.py144
-rw-r--r--src/silx/gui/test/test_qt.py212
-rw-r--r--src/silx/gui/test/utils.py (renamed from silx/gui/test/utils.py)0
-rwxr-xr-xsrc/silx/gui/utils/__init__.py (renamed from silx/gui/utils/__init__.py)0
-rw-r--r--src/silx/gui/utils/concurrent.py (renamed from silx/gui/utils/concurrent.py)0
-rw-r--r--src/silx/gui/utils/glutils/__init__.py199
-rw-r--r--src/silx/gui/utils/image.py143
-rw-r--r--src/silx/gui/utils/matplotlib.py65
-rw-r--r--src/silx/gui/utils/projecturl.py (renamed from silx/gui/utils/projecturl.py)0
-rwxr-xr-xsrc/silx/gui/utils/qtutils.py (renamed from silx/gui/utils/qtutils.py)0
-rw-r--r--src/silx/gui/utils/signal.py (renamed from silx/gui/utils/signal.py)0
-rwxr-xr-xsrc/silx/gui/utils/test/__init__.py25
-rw-r--r--src/silx/gui/utils/test/test.py63
-rw-r--r--src/silx/gui/utils/test/test_async.py127
-rw-r--r--src/silx/gui/utils/test/test_glutils.py55
-rw-r--r--src/silx/gui/utils/test/test_image.py79
-rwxr-xr-xsrc/silx/gui/utils/test/test_qtutils.py65
-rw-r--r--src/silx/gui/utils/test/test_testutils.py44
-rw-r--r--src/silx/gui/utils/testutils.py508
-rw-r--r--src/silx/gui/widgets/BoxLayoutDockWidget.py (renamed from silx/gui/widgets/BoxLayoutDockWidget.py)0
-rw-r--r--src/silx/gui/widgets/ColormapNameComboBox.py (renamed from silx/gui/widgets/ColormapNameComboBox.py)0
-rw-r--r--src/silx/gui/widgets/ElidedLabel.py140
-rw-r--r--src/silx/gui/widgets/FloatEdit.py71
-rw-r--r--src/silx/gui/widgets/FlowLayout.py (renamed from silx/gui/widgets/FlowLayout.py)0
-rw-r--r--src/silx/gui/widgets/FrameBrowser.py (renamed from silx/gui/widgets/FrameBrowser.py)0
-rw-r--r--src/silx/gui/widgets/HierarchicalTableView.py (renamed from silx/gui/widgets/HierarchicalTableView.py)0
-rwxr-xr-xsrc/silx/gui/widgets/LegendIconWidget.py (renamed from silx/gui/widgets/LegendIconWidget.py)0
-rw-r--r--src/silx/gui/widgets/MedianFilterDialog.py (renamed from silx/gui/widgets/MedianFilterDialog.py)0
-rw-r--r--src/silx/gui/widgets/MultiModeAction.py (renamed from silx/gui/widgets/MultiModeAction.py)0
-rw-r--r--src/silx/gui/widgets/PeriodicTable.py831
-rw-r--r--src/silx/gui/widgets/PrintGeometryDialog.py222
-rw-r--r--src/silx/gui/widgets/PrintPreview.py697
-rw-r--r--src/silx/gui/widgets/RangeSlider.py776
-rw-r--r--src/silx/gui/widgets/TableWidget.py626
-rw-r--r--src/silx/gui/widgets/ThreadPoolPushButton.py (renamed from silx/gui/widgets/ThreadPoolPushButton.py)0
-rw-r--r--src/silx/gui/widgets/UrlSelectionTable.py169
-rw-r--r--src/silx/gui/widgets/WaitingPushButton.py241
-rw-r--r--src/silx/gui/widgets/__init__.py (renamed from silx/gui/widgets/__init__.py)0
-rw-r--r--src/silx/gui/widgets/setup.py (renamed from silx/gui/widgets/setup.py)0
-rw-r--r--src/silx/gui/widgets/test/__init__.py24
-rw-r--r--src/silx/gui/widgets/test/test_boxlayoutdockwidget.py72
-rw-r--r--src/silx/gui/widgets/test/test_elidedlabel.py100
-rw-r--r--src/silx/gui/widgets/test/test_flowlayout.py66
-rw-r--r--src/silx/gui/widgets/test/test_framebrowser.py62
-rw-r--r--src/silx/gui/widgets/test/test_hierarchicaltableview.py103
-rw-r--r--src/silx/gui/widgets/test/test_legendiconwidget.py63
-rw-r--r--src/silx/gui/widgets/test/test_periodictable.py148
-rw-r--r--src/silx/gui/widgets/test/test_printpreview.py63
-rw-r--r--src/silx/gui/widgets/test/test_rangeslider.py103
-rw-r--r--src/silx/gui/widgets/test/test_tablewidget.py50
-rw-r--r--src/silx/gui/widgets/test/test_threadpoolpushbutton.py124
-rw-r--r--src/silx/image/__init__.py (renamed from silx/image/__init__.py)0
-rw-r--r--src/silx/image/_boundingbox.py (renamed from silx/image/_boundingbox.py)0
-rw-r--r--src/silx/image/backprojection.py (renamed from silx/image/backprojection.py)0
-rw-r--r--src/silx/image/bilinear.pyx (renamed from silx/image/bilinear.pyx)0
-rw-r--r--src/silx/image/marchingsquares/__init__.py (renamed from silx/image/marchingsquares/__init__.py)0
-rw-r--r--src/silx/image/marchingsquares/_mergeimpl.pyx (renamed from silx/image/marchingsquares/_mergeimpl.pyx)0
-rw-r--r--src/silx/image/marchingsquares/_skimage.py (renamed from silx/image/marchingsquares/_skimage.py)0
-rw-r--r--src/silx/image/marchingsquares/include/patterns.h (renamed from silx/image/marchingsquares/include/patterns.h)0
-rw-r--r--src/silx/image/marchingsquares/setup.py51
-rw-r--r--src/silx/image/marchingsquares/test/__init__.py24
-rw-r--r--src/silx/image/marchingsquares/test/test_funcapi.py92
-rw-r--r--src/silx/image/marchingsquares/test/test_mergeimpl.py264
-rw-r--r--src/silx/image/medianfilter.py (renamed from silx/image/medianfilter.py)0
-rw-r--r--src/silx/image/phantomgenerator.py (renamed from silx/image/phantomgenerator.py)0
-rw-r--r--src/silx/image/projection.py (renamed from silx/image/projection.py)0
-rw-r--r--src/silx/image/reconstruction.py (renamed from silx/image/reconstruction.py)0
-rw-r--r--src/silx/image/setup.py (renamed from silx/image/setup.py)0
-rw-r--r--src/silx/image/shapes.pyx (renamed from silx/image/shapes.pyx)0
-rw-r--r--src/silx/image/sift.py (renamed from silx/image/sift.py)0
-rw-r--r--src/silx/image/test/__init__.py24
-rw-r--r--src/silx/image/test/test_bb.py74
-rw-r--r--src/silx/image/test/test_bilinear.py167
-rw-r--r--src/silx/image/test/test_medianfilter.py64
-rw-r--r--src/silx/image/test/test_shapes.py354
-rw-r--r--src/silx/image/test/test_tomography.py54
-rw-r--r--src/silx/image/tomography.py (renamed from silx/image/tomography.py)0
-rw-r--r--src/silx/image/utils.py (renamed from silx/image/utils.py)0
-rw-r--r--src/silx/io/__init__.py (renamed from silx/io/__init__.py)0
-rw-r--r--src/silx/io/commonh5.py1061
-rw-r--r--src/silx/io/configdict.py (renamed from silx/io/configdict.py)0
-rw-r--r--src/silx/io/convert.py335
-rw-r--r--src/silx/io/dictdump.py843
-rwxr-xr-xsrc/silx/io/fabioh5.py1050
-rw-r--r--src/silx/io/fioh5.py490
-rw-r--r--src/silx/io/h5py_utils.py440
-rw-r--r--src/silx/io/nxdata/__init__.py (renamed from silx/io/nxdata/__init__.py)0
-rw-r--r--src/silx/io/nxdata/_utils.py183
-rw-r--r--src/silx/io/nxdata/parse.py1004
-rw-r--r--src/silx/io/nxdata/write.py202
-rw-r--r--src/silx/io/octaveh5.py (renamed from silx/io/octaveh5.py)0
-rw-r--r--src/silx/io/rawh5.py (renamed from silx/io/rawh5.py)0
-rw-r--r--src/silx/io/setup.py (renamed from silx/io/setup.py)0
-rw-r--r--src/silx/io/specfile.pyx1268
-rw-r--r--src/silx/io/specfile/include/Lists.h (renamed from silx/io/specfile/include/Lists.h)0
-rw-r--r--src/silx/io/specfile/include/SpecFile.h (renamed from silx/io/specfile/include/SpecFile.h)0
-rw-r--r--src/silx/io/specfile/include/SpecFileCython.h (renamed from silx/io/specfile/include/SpecFileCython.h)0
-rw-r--r--src/silx/io/specfile/include/SpecFileP.h (renamed from silx/io/specfile/include/SpecFileP.h)0
-rw-r--r--src/silx/io/specfile/include/locale_management.h (renamed from silx/io/specfile/include/locale_management.h)0
-rw-r--r--src/silx/io/specfile/src/locale_management.c (renamed from silx/io/specfile/src/locale_management.c)0
-rw-r--r--src/silx/io/specfile/src/sfdata.c (renamed from silx/io/specfile/src/sfdata.c)0
-rw-r--r--src/silx/io/specfile/src/sfheader.c (renamed from silx/io/specfile/src/sfheader.c)0
-rw-r--r--src/silx/io/specfile/src/sfindex.c (renamed from silx/io/specfile/src/sfindex.c)0
-rw-r--r--src/silx/io/specfile/src/sfinit.c (renamed from silx/io/specfile/src/sfinit.c)0
-rw-r--r--src/silx/io/specfile/src/sflabel.c (renamed from silx/io/specfile/src/sflabel.c)0
-rw-r--r--src/silx/io/specfile/src/sflists.c (renamed from silx/io/specfile/src/sflists.c)0
-rw-r--r--src/silx/io/specfile/src/sfmca.c (renamed from silx/io/specfile/src/sfmca.c)0
-rw-r--r--src/silx/io/specfile/src/sftools.c (renamed from silx/io/specfile/src/sftools.c)0
-rw-r--r--src/silx/io/specfile/src/sfwrite.c (renamed from silx/io/specfile/src/sfwrite.c)0
-rw-r--r--src/silx/io/specfile_wrapper.pxd (renamed from silx/io/specfile_wrapper.pxd)0
-rw-r--r--src/silx/io/specfilewrapper.py (renamed from silx/io/specfilewrapper.py)0
-rw-r--r--src/silx/io/spech5.py907
-rw-r--r--src/silx/io/spectoh5.py (renamed from silx/io/spectoh5.py)0
-rw-r--r--src/silx/io/test/__init__.py23
-rw-r--r--src/silx/io/test/test_commonh5.py285
-rw-r--r--src/silx/io/test/test_dictdump.py1009
-rwxr-xr-xsrc/silx/io/test/test_fabioh5.py615
-rw-r--r--src/silx/io/test/test_fioh5.py299
-rw-r--r--src/silx/io/test/test_h5py_utils.py453
-rw-r--r--src/silx/io/test/test_nxdata.py563
-rw-r--r--src/silx/io/test/test_octaveh5.py156
-rw-r--r--src/silx/io/test/test_rawh5.py85
-rw-r--r--src/silx/io/test/test_specfile.py420
-rw-r--r--src/silx/io/test/test_specfilewrapper.py195
-rw-r--r--src/silx/io/test/test_spech5.py929
-rw-r--r--src/silx/io/test/test_spectoh5.py183
-rw-r--r--src/silx/io/test/test_url.py217
-rw-r--r--src/silx/io/test/test_utils.py923
-rw-r--r--src/silx/io/test/test_write_to_h5.py118
-rw-r--r--src/silx/io/url.py388
-rw-r--r--src/silx/io/utils.py1185
-rw-r--r--src/silx/math/__init__.py (renamed from silx/math/__init__.py)0
-rw-r--r--src/silx/math/_colormap.pyx571
-rw-r--r--src/silx/math/calibration.py (renamed from silx/math/calibration.py)0
-rw-r--r--src/silx/math/chistogramnd.pyx (renamed from silx/math/chistogramnd.pyx)0
-rw-r--r--src/silx/math/chistogramnd_lut.pyx (renamed from silx/math/chistogramnd_lut.pyx)0
-rw-r--r--src/silx/math/colormap.py450
-rw-r--r--src/silx/math/combo.pyx (renamed from silx/math/combo.pyx)0
-rw-r--r--src/silx/math/fft/__init__.py (renamed from silx/math/fft/__init__.py)0
-rw-r--r--src/silx/math/fft/basefft.py (renamed from silx/math/fft/basefft.py)0
-rw-r--r--src/silx/math/fft/clfft.py (renamed from silx/math/fft/clfft.py)0
-rw-r--r--src/silx/math/fft/cufft.py (renamed from silx/math/fft/cufft.py)0
-rw-r--r--src/silx/math/fft/fft.py (renamed from silx/math/fft/fft.py)0
-rw-r--r--src/silx/math/fft/fftw.py (renamed from silx/math/fft/fftw.py)0
-rw-r--r--src/silx/math/fft/npfft.py (renamed from silx/math/fft/npfft.py)0
-rw-r--r--src/silx/math/fft/setup.py (renamed from silx/math/fft/setup.py)0
-rw-r--r--src/silx/math/fft/test/__init__.py23
-rw-r--r--src/silx/math/fft/test/test_fft.py257
-rw-r--r--src/silx/math/fit/__init__.py (renamed from silx/math/fit/__init__.py)0
-rw-r--r--src/silx/math/fit/bgtheories.py (renamed from silx/math/fit/bgtheories.py)0
-rw-r--r--src/silx/math/fit/filters.pyx (renamed from silx/math/fit/filters.pyx)0
-rw-r--r--src/silx/math/fit/filters/include/filters.h (renamed from silx/math/fit/filters/include/filters.h)0
-rw-r--r--src/silx/math/fit/filters/src/smoothnd.c (renamed from silx/math/fit/filters/src/smoothnd.c)0
-rw-r--r--src/silx/math/fit/filters/src/snip1d.c (renamed from silx/math/fit/filters/src/snip1d.c)0
-rw-r--r--src/silx/math/fit/filters/src/snip2d.c (renamed from silx/math/fit/filters/src/snip2d.c)0
-rw-r--r--src/silx/math/fit/filters/src/snip3d.c (renamed from silx/math/fit/filters/src/snip3d.c)0
-rw-r--r--src/silx/math/fit/filters/src/strip.c (renamed from silx/math/fit/filters/src/strip.c)0
-rw-r--r--src/silx/math/fit/filters_wrapper.pxd (renamed from silx/math/fit/filters_wrapper.pxd)0
-rw-r--r--src/silx/math/fit/fitmanager.py1087
-rw-r--r--src/silx/math/fit/fittheories.py1374
-rw-r--r--src/silx/math/fit/fittheory.py (renamed from silx/math/fit/fittheory.py)0
-rw-r--r--src/silx/math/fit/functions.pyx (renamed from silx/math/fit/functions.pyx)0
-rw-r--r--src/silx/math/fit/functions/include/functions.h (renamed from silx/math/fit/functions/include/functions.h)0
-rw-r--r--src/silx/math/fit/functions/src/funs.c (renamed from silx/math/fit/functions/src/funs.c)0
-rw-r--r--src/silx/math/fit/functions_wrapper.pxd (renamed from silx/math/fit/functions_wrapper.pxd)0
-rw-r--r--src/silx/math/fit/leastsq.py (renamed from silx/math/fit/leastsq.py)0
-rw-r--r--src/silx/math/fit/peaks.pyx (renamed from silx/math/fit/peaks.pyx)0
-rw-r--r--src/silx/math/fit/peaks/include/peaks.h (renamed from silx/math/fit/peaks/include/peaks.h)0
-rw-r--r--src/silx/math/fit/peaks/src/peaks.c (renamed from silx/math/fit/peaks/src/peaks.c)0
-rw-r--r--src/silx/math/fit/peaks_wrapper.pxd (renamed from silx/math/fit/peaks_wrapper.pxd)0
-rw-r--r--src/silx/math/fit/setup.py (renamed from silx/math/fit/setup.py)0
-rw-r--r--src/silx/math/fit/test/__init__.py23
-rw-r--r--src/silx/math/fit/test/test_bgtheories.py154
-rw-r--r--src/silx/math/fit/test/test_filters.py122
-rw-r--r--src/silx/math/fit/test/test_fit.py373
-rw-r--r--src/silx/math/fit/test/test_fitmanager.py498
-rw-r--r--src/silx/math/fit/test/test_functions.py259
-rw-r--r--src/silx/math/fit/test/test_peaks.py132
-rw-r--r--src/silx/math/histogram.py (renamed from silx/math/histogram.py)0
-rw-r--r--src/silx/math/histogramnd/include/histogramnd_c.h (renamed from silx/math/histogramnd/include/histogramnd_c.h)0
-rw-r--r--src/silx/math/histogramnd/include/msvc/stdint.h (renamed from silx/math/histogramnd/include/msvc/stdint.h)0
-rw-r--r--src/silx/math/histogramnd/include/templates.h (renamed from silx/math/histogramnd/include/templates.h)0
-rw-r--r--src/silx/math/histogramnd/src/histogramnd_c.c (renamed from silx/math/histogramnd/src/histogramnd_c.c)0
-rw-r--r--src/silx/math/histogramnd/src/histogramnd_template.c (renamed from silx/math/histogramnd/src/histogramnd_template.c)0
-rw-r--r--src/silx/math/histogramnd_c.pxd (renamed from silx/math/histogramnd_c.pxd)0
-rw-r--r--src/silx/math/include/math_compatibility.h (renamed from silx/math/include/math_compatibility.h)0
-rw-r--r--src/silx/math/interpolate.pyx (renamed from silx/math/interpolate.pyx)0
-rw-r--r--src/silx/math/marchingcubes.pyx (renamed from silx/math/marchingcubes.pyx)0
-rw-r--r--src/silx/math/marchingcubes/mc.hpp (renamed from silx/math/marchingcubes/mc.hpp)0
-rw-r--r--src/silx/math/marchingcubes/mc_lut.cpp (renamed from silx/math/marchingcubes/mc_lut.cpp)0
-rw-r--r--src/silx/math/math_compatibility.pxd (renamed from silx/math/math_compatibility.pxd)0
-rw-r--r--src/silx/math/mc.pxd (renamed from silx/math/mc.pxd)0
-rw-r--r--src/silx/math/medianfilter/__init__.py (renamed from silx/math/medianfilter/__init__.py)0
-rw-r--r--src/silx/math/medianfilter/include/median_filter.hpp (renamed from silx/math/medianfilter/include/median_filter.hpp)0
-rw-r--r--src/silx/math/medianfilter/median_filter.pxd (renamed from silx/math/medianfilter/median_filter.pxd)0
-rw-r--r--src/silx/math/medianfilter/medianfilter.pyx (renamed from silx/math/medianfilter/medianfilter.pyx)0
-rw-r--r--src/silx/math/medianfilter/setup.py (renamed from silx/math/medianfilter/setup.py)0
-rw-r--r--src/silx/math/medianfilter/test/__init__.py23
-rw-r--r--src/silx/math/medianfilter/test/benchmark.py122
-rw-r--r--src/silx/math/medianfilter/test/test_medianfilter.py722
-rw-r--r--src/silx/math/setup.py99
-rw-r--r--src/silx/math/test/__init__.py23
-rw-r--r--src/silx/math/test/benchmark_combo.py192
-rw-r--r--src/silx/math/test/histo_benchmarks.py (renamed from silx/math/test/histo_benchmarks.py)0
-rw-r--r--src/silx/math/test/test_HistogramndLut_nominal.py571
-rw-r--r--src/silx/math/test/test_calibration.py145
-rw-r--r--src/silx/math/test/test_colormap.py269
-rw-r--r--src/silx/math/test/test_combo.py207
-rw-r--r--src/silx/math/test/test_histogramnd_error.py519
-rw-r--r--src/silx/math/test/test_histogramnd_nominal.py937
-rw-r--r--src/silx/math/test/test_histogramnd_vs_np.py826
-rw-r--r--src/silx/math/test/test_interpolate.py125
-rw-r--r--src/silx/math/test/test_marchingcubes.py174
-rw-r--r--src/silx/opencl/__init__.py (renamed from silx/opencl/__init__.py)0
-rw-r--r--src/silx/opencl/backprojection.py (renamed from silx/opencl/backprojection.py)0
-rw-r--r--src/silx/opencl/codec/__init__.py (renamed from silx/opencl/codec/__init__.py)0
-rw-r--r--src/silx/opencl/codec/byte_offset.py (renamed from silx/opencl/codec/byte_offset.py)0
-rw-r--r--src/silx/opencl/codec/setup.py (renamed from silx/opencl/codec/setup.py)0
-rw-r--r--src/silx/opencl/codec/test/__init__.py23
-rw-r--r--src/silx/opencl/codec/test/test_byte_offset.py303
-rw-r--r--src/silx/opencl/common.py694
-rw-r--r--src/silx/opencl/conftest.py5
-rw-r--r--src/silx/opencl/convolution.py (renamed from silx/opencl/convolution.py)0
-rw-r--r--src/silx/opencl/image.py (renamed from silx/opencl/image.py)0
-rw-r--r--src/silx/opencl/linalg.py (renamed from silx/opencl/linalg.py)0
-rw-r--r--src/silx/opencl/medfilt.py (renamed from silx/opencl/medfilt.py)0
-rw-r--r--src/silx/opencl/processing.py (renamed from silx/opencl/processing.py)0
-rw-r--r--src/silx/opencl/projection.py (renamed from silx/opencl/projection.py)0
-rw-r--r--src/silx/opencl/reconstruction.py (renamed from silx/opencl/reconstruction.py)0
-rw-r--r--src/silx/opencl/setup.py (renamed from silx/opencl/setup.py)0
-rw-r--r--src/silx/opencl/sinofilter.py (renamed from silx/opencl/sinofilter.py)0
-rw-r--r--src/silx/opencl/sparse.py (renamed from silx/opencl/sparse.py)0
-rw-r--r--src/silx/opencl/statistics.py (renamed from silx/opencl/statistics.py)0
-rw-r--r--src/silx/opencl/test/__init__.py23
-rw-r--r--src/silx/opencl/test/test_addition.py140
-rw-r--r--src/silx/opencl/test/test_array_utils.py152
-rw-r--r--src/silx/opencl/test/test_backprojection.py217
-rw-r--r--src/silx/opencl/test/test_convolution.py280
-rw-r--r--src/silx/opencl/test/test_doubleword.py244
-rw-r--r--src/silx/opencl/test/test_image.py125
-rw-r--r--src/silx/opencl/test/test_kahan.py254
-rw-r--r--src/silx/opencl/test/test_linalg.py204
-rw-r--r--src/silx/opencl/test/test_medfilt.py162
-rw-r--r--src/silx/opencl/test/test_projection.py121
-rw-r--r--src/silx/opencl/test/test_sparse.py188
-rw-r--r--src/silx/opencl/test/test_stats.py106
-rw-r--r--src/silx/opencl/utils.py (renamed from silx/opencl/utils.py)0
-rw-r--r--src/silx/resources/__init__.py (renamed from silx/resources/__init__.py)0
-rw-r--r--src/silx/resources/gui/colormaps/cividis.npy (renamed from silx/resources/gui/colormaps/cividis.npy)bin3200 -> 3200 bytes
-rw-r--r--src/silx/resources/gui/colormaps/inferno.npy (renamed from silx/resources/gui/colormaps/inferno.npy)bin3152 -> 3152 bytes
-rw-r--r--src/silx/resources/gui/colormaps/magma.npy (renamed from silx/resources/gui/colormaps/magma.npy)bin3152 -> 3152 bytes
-rw-r--r--src/silx/resources/gui/colormaps/plasma.npy (renamed from silx/resources/gui/colormaps/plasma.npy)bin3152 -> 3152 bytes
-rw-r--r--src/silx/resources/gui/colormaps/viridis.npy (renamed from silx/resources/gui/colormaps/viridis.npy)bin3152 -> 3152 bytes
-rw-r--r--src/silx/resources/gui/icons/3d-plane-normal-x.png (renamed from silx/resources/gui/icons/3d-plane-normal-x.png)bin743 -> 743 bytes
-rw-r--r--src/silx/resources/gui/icons/3d-plane-normal-x.svg (renamed from silx/resources/gui/icons/3d-plane-normal-x.svg)0
-rw-r--r--src/silx/resources/gui/icons/3d-plane-normal-y.png (renamed from silx/resources/gui/icons/3d-plane-normal-y.png)bin791 -> 791 bytes
-rw-r--r--src/silx/resources/gui/icons/3d-plane-normal-y.svg (renamed from silx/resources/gui/icons/3d-plane-normal-y.svg)0
-rw-r--r--src/silx/resources/gui/icons/3d-plane-normal-z.png (renamed from silx/resources/gui/icons/3d-plane-normal-z.png)bin681 -> 681 bytes
-rw-r--r--src/silx/resources/gui/icons/3d-plane-normal-z.svg (renamed from silx/resources/gui/icons/3d-plane-normal-z.svg)0
-rw-r--r--src/silx/resources/gui/icons/3d-plane-pan.png (renamed from silx/resources/gui/icons/3d-plane-pan.png)bin1428 -> 1428 bytes
-rw-r--r--src/silx/resources/gui/icons/3d-plane-pan.svg (renamed from silx/resources/gui/icons/3d-plane-pan.svg)0
-rw-r--r--src/silx/resources/gui/icons/3d-plane.png (renamed from silx/resources/gui/icons/3d-plane.png)bin1134 -> 1134 bytes
-rw-r--r--src/silx/resources/gui/icons/3d-plane.svg (renamed from silx/resources/gui/icons/3d-plane.svg)0
-rw-r--r--src/silx/resources/gui/icons/add-range-horizontal.png (renamed from silx/resources/gui/icons/add-range-horizontal.png)bin560 -> 560 bytes
-rw-r--r--src/silx/resources/gui/icons/add-range-horizontal.svg (renamed from silx/resources/gui/icons/add-range-horizontal.svg)0
-rw-r--r--src/silx/resources/gui/icons/add-shape-arc.png (renamed from silx/resources/gui/icons/add-shape-arc.png)bin1164 -> 1164 bytes
-rw-r--r--src/silx/resources/gui/icons/add-shape-arc.svg (renamed from silx/resources/gui/icons/add-shape-arc.svg)0
-rw-r--r--src/silx/resources/gui/icons/add-shape-circle.png (renamed from silx/resources/gui/icons/add-shape-circle.png)bin1238 -> 1238 bytes
-rw-r--r--src/silx/resources/gui/icons/add-shape-circle.svg (renamed from silx/resources/gui/icons/add-shape-circle.svg)0
-rw-r--r--src/silx/resources/gui/icons/add-shape-cross.png (renamed from silx/resources/gui/icons/add-shape-cross.png)bin501 -> 501 bytes
-rw-r--r--src/silx/resources/gui/icons/add-shape-cross.svg (renamed from silx/resources/gui/icons/add-shape-cross.svg)0
-rw-r--r--src/silx/resources/gui/icons/add-shape-diagonal.png (renamed from silx/resources/gui/icons/add-shape-diagonal.png)bin626 -> 626 bytes
-rw-r--r--src/silx/resources/gui/icons/add-shape-diagonal.svg (renamed from silx/resources/gui/icons/add-shape-diagonal.svg)0
-rw-r--r--src/silx/resources/gui/icons/add-shape-ellipse.png (renamed from silx/resources/gui/icons/add-shape-ellipse.png)bin1180 -> 1180 bytes
-rw-r--r--src/silx/resources/gui/icons/add-shape-ellipse.svg (renamed from silx/resources/gui/icons/add-shape-ellipse.svg)0
-rw-r--r--src/silx/resources/gui/icons/add-shape-horizontal.png (renamed from silx/resources/gui/icons/add-shape-horizontal.png)bin408 -> 408 bytes
-rw-r--r--src/silx/resources/gui/icons/add-shape-horizontal.svg (renamed from silx/resources/gui/icons/add-shape-horizontal.svg)0
-rw-r--r--src/silx/resources/gui/icons/add-shape-point.png (renamed from silx/resources/gui/icons/add-shape-point.png)bin482 -> 482 bytes
-rw-r--r--src/silx/resources/gui/icons/add-shape-point.svg (renamed from silx/resources/gui/icons/add-shape-point.svg)0
-rw-r--r--src/silx/resources/gui/icons/add-shape-polygon.png (renamed from silx/resources/gui/icons/add-shape-polygon.png)bin1217 -> 1217 bytes
-rw-r--r--src/silx/resources/gui/icons/add-shape-polygon.svg (renamed from silx/resources/gui/icons/add-shape-polygon.svg)0
-rw-r--r--src/silx/resources/gui/icons/add-shape-rectangle.png (renamed from silx/resources/gui/icons/add-shape-rectangle.png)bin463 -> 463 bytes
-rw-r--r--src/silx/resources/gui/icons/add-shape-rectangle.svg (renamed from silx/resources/gui/icons/add-shape-rectangle.svg)0
-rw-r--r--src/silx/resources/gui/icons/add-shape-unknown.png (renamed from silx/resources/gui/icons/add-shape-unknown.png)bin1506 -> 1506 bytes
-rw-r--r--src/silx/resources/gui/icons/add-shape-unknown.svg (renamed from silx/resources/gui/icons/add-shape-unknown.svg)0
-rw-r--r--src/silx/resources/gui/icons/add-shape-vertical.png (renamed from silx/resources/gui/icons/add-shape-vertical.png)bin422 -> 422 bytes
-rw-r--r--src/silx/resources/gui/icons/add-shape-vertical.svg (renamed from silx/resources/gui/icons/add-shape-vertical.svg)0
-rw-r--r--src/silx/resources/gui/icons/add.png (renamed from silx/resources/gui/icons/add.png)bin470 -> 470 bytes
-rw-r--r--src/silx/resources/gui/icons/add.svg (renamed from silx/resources/gui/icons/add.svg)0
-rw-r--r--src/silx/resources/gui/icons/aggregation-mode.pngbin0 -> 826 bytes
-rw-r--r--src/silx/resources/gui/icons/aggregation-mode.svg4
-rw-r--r--src/silx/resources/gui/icons/arrow-keys.png (renamed from silx/resources/gui/icons/arrow-keys.png)bin669 -> 669 bytes
-rw-r--r--src/silx/resources/gui/icons/arrow-keys.svg (renamed from silx/resources/gui/icons/arrow-keys.svg)0
-rw-r--r--src/silx/resources/gui/icons/axis.png (renamed from silx/resources/gui/icons/axis.png)bin1740 -> 1740 bytes
-rw-r--r--src/silx/resources/gui/icons/axis.svg (renamed from silx/resources/gui/icons/axis.svg)0
-rw-r--r--src/silx/resources/gui/icons/backend-opengl.png (renamed from silx/resources/gui/icons/backend-opengl.png)bin1582 -> 1582 bytes
-rw-r--r--src/silx/resources/gui/icons/backend-opengl.svg (renamed from silx/resources/gui/icons/backend-opengl.svg)0
-rw-r--r--src/silx/resources/gui/icons/camera.png (renamed from silx/resources/gui/icons/camera.png)bin348 -> 348 bytes
-rw-r--r--src/silx/resources/gui/icons/camera.svg (renamed from silx/resources/gui/icons/camera.svg)0
-rw-r--r--src/silx/resources/gui/icons/clipboard.png (renamed from silx/resources/gui/icons/clipboard.png)bin736 -> 736 bytes
-rw-r--r--src/silx/resources/gui/icons/clipboard.svg (renamed from silx/resources/gui/icons/clipboard.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/close.png (renamed from silx/resources/gui/icons/close.png)bin2243 -> 2243 bytes
-rw-r--r--src/silx/resources/gui/icons/close.svg (renamed from silx/resources/gui/icons/close.svg)0
-rw-r--r--src/silx/resources/gui/icons/colorbar.png (renamed from silx/resources/gui/icons/colorbar.png)bin657 -> 657 bytes
-rw-r--r--src/silx/resources/gui/icons/colorbar.svg (renamed from silx/resources/gui/icons/colorbar.svg)0
-rw-r--r--src/silx/resources/gui/icons/colormap-histogram.png (renamed from silx/resources/gui/icons/colormap-histogram.png)bin641 -> 641 bytes
-rw-r--r--src/silx/resources/gui/icons/colormap-histogram.svg (renamed from silx/resources/gui/icons/colormap-histogram.svg)0
-rw-r--r--src/silx/resources/gui/icons/colormap-none.png (renamed from silx/resources/gui/icons/colormap-none.png)bin232 -> 232 bytes
-rw-r--r--src/silx/resources/gui/icons/colormap-none.svg (renamed from silx/resources/gui/icons/colormap-none.svg)0
-rw-r--r--src/silx/resources/gui/icons/colormap-norm-arcsinh.png (renamed from silx/resources/gui/icons/colormap-norm-arcsinh.png)bin648 -> 648 bytes
-rw-r--r--src/silx/resources/gui/icons/colormap-norm-arcsinh.svg (renamed from silx/resources/gui/icons/colormap-norm-arcsinh.svg)0
-rw-r--r--src/silx/resources/gui/icons/colormap-norm-gamma.png (renamed from silx/resources/gui/icons/colormap-norm-gamma.png)bin994 -> 994 bytes
-rw-r--r--src/silx/resources/gui/icons/colormap-norm-gamma.svg (renamed from silx/resources/gui/icons/colormap-norm-gamma.svg)0
-rw-r--r--src/silx/resources/gui/icons/colormap-norm-linear.png (renamed from silx/resources/gui/icons/colormap-norm-linear.png)bin675 -> 675 bytes
-rw-r--r--src/silx/resources/gui/icons/colormap-norm-linear.svg (renamed from silx/resources/gui/icons/colormap-norm-linear.svg)0
-rw-r--r--src/silx/resources/gui/icons/colormap-norm-log.png (renamed from silx/resources/gui/icons/colormap-norm-log.png)bin512 -> 512 bytes
-rw-r--r--src/silx/resources/gui/icons/colormap-norm-log.svg (renamed from silx/resources/gui/icons/colormap-norm-log.svg)0
-rw-r--r--src/silx/resources/gui/icons/colormap-norm-sqrt.png (renamed from silx/resources/gui/icons/colormap-norm-sqrt.png)bin569 -> 569 bytes
-rw-r--r--src/silx/resources/gui/icons/colormap-norm-sqrt.svg (renamed from silx/resources/gui/icons/colormap-norm-sqrt.svg)0
-rw-r--r--src/silx/resources/gui/icons/colormap-range.png (renamed from silx/resources/gui/icons/colormap-range.png)bin284 -> 284 bytes
-rw-r--r--src/silx/resources/gui/icons/colormap-range.svg (renamed from silx/resources/gui/icons/colormap-range.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/colormap.png (renamed from silx/resources/gui/icons/colormap.png)bin1583 -> 1583 bytes
-rw-r--r--src/silx/resources/gui/icons/colormap.svg (renamed from silx/resources/gui/icons/colormap.svg)0
-rw-r--r--src/silx/resources/gui/icons/compare-align-auto.png (renamed from silx/resources/gui/icons/compare-align-auto.png)bin1446 -> 1446 bytes
-rw-r--r--src/silx/resources/gui/icons/compare-align-auto.svg4
-rw-r--r--src/silx/resources/gui/icons/compare-align-center.png (renamed from silx/resources/gui/icons/compare-align-center.png)bin716 -> 716 bytes
-rw-r--r--src/silx/resources/gui/icons/compare-align-center.svg4
-rw-r--r--src/silx/resources/gui/icons/compare-align-origin.png (renamed from silx/resources/gui/icons/compare-align-origin.png)bin728 -> 728 bytes
-rw-r--r--src/silx/resources/gui/icons/compare-align-origin.svg4
-rw-r--r--src/silx/resources/gui/icons/compare-align-stretch.png (renamed from silx/resources/gui/icons/compare-align-stretch.png)bin903 -> 903 bytes
-rw-r--r--src/silx/resources/gui/icons/compare-align-stretch.svg4
-rw-r--r--src/silx/resources/gui/icons/compare-keypoints.png (renamed from silx/resources/gui/icons/compare-keypoints.png)bin616 -> 616 bytes
-rw-r--r--src/silx/resources/gui/icons/compare-keypoints.svg (renamed from silx/resources/gui/icons/compare-keypoints.svg)0
-rw-r--r--src/silx/resources/gui/icons/compare-mode-a-minus-b.png (renamed from silx/resources/gui/icons/compare-mode-a-minus-b.png)bin3862 -> 3862 bytes
-rw-r--r--src/silx/resources/gui/icons/compare-mode-a-minus-b.svg (renamed from silx/resources/gui/icons/compare-mode-a-minus-b.svg)0
-rw-r--r--src/silx/resources/gui/icons/compare-mode-a.png (renamed from silx/resources/gui/icons/compare-mode-a.png)bin803 -> 803 bytes
-rw-r--r--src/silx/resources/gui/icons/compare-mode-a.svg (renamed from silx/resources/gui/icons/compare-mode-a.svg)0
-rw-r--r--src/silx/resources/gui/icons/compare-mode-b.png (renamed from silx/resources/gui/icons/compare-mode-b.png)bin740 -> 740 bytes
-rw-r--r--src/silx/resources/gui/icons/compare-mode-b.svg (renamed from silx/resources/gui/icons/compare-mode-b.svg)0
-rw-r--r--src/silx/resources/gui/icons/compare-mode-hline.png (renamed from silx/resources/gui/icons/compare-mode-hline.png)bin902 -> 902 bytes
-rw-r--r--src/silx/resources/gui/icons/compare-mode-hline.svg (renamed from silx/resources/gui/icons/compare-mode-hline.svg)0
-rw-r--r--src/silx/resources/gui/icons/compare-mode-rb-channel.png (renamed from silx/resources/gui/icons/compare-mode-rb-channel.png)bin1269 -> 1269 bytes
-rw-r--r--src/silx/resources/gui/icons/compare-mode-rb-channel.svg (renamed from silx/resources/gui/icons/compare-mode-rb-channel.svg)0
-rw-r--r--src/silx/resources/gui/icons/compare-mode-rbneg-channel.png (renamed from silx/resources/gui/icons/compare-mode-rbneg-channel.png)bin1260 -> 1260 bytes
-rw-r--r--src/silx/resources/gui/icons/compare-mode-rbneg-channel.svg (renamed from silx/resources/gui/icons/compare-mode-rbneg-channel.svg)0
-rw-r--r--src/silx/resources/gui/icons/compare-mode-vline.png (renamed from silx/resources/gui/icons/compare-mode-vline.png)bin1079 -> 1079 bytes
-rw-r--r--src/silx/resources/gui/icons/compare-mode-vline.svg (renamed from silx/resources/gui/icons/compare-mode-vline.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/crop.png (renamed from silx/resources/gui/icons/crop.png)bin642 -> 642 bytes
-rw-r--r--src/silx/resources/gui/icons/crop.svg (renamed from silx/resources/gui/icons/crop.svg)0
-rw-r--r--src/silx/resources/gui/icons/crosshair.png (renamed from silx/resources/gui/icons/crosshair.png)bin1196 -> 1196 bytes
-rw-r--r--src/silx/resources/gui/icons/crosshair.svg (renamed from silx/resources/gui/icons/crosshair.svg)0
-rw-r--r--src/silx/resources/gui/icons/cube-back.png (renamed from silx/resources/gui/icons/cube-back.png)bin737 -> 737 bytes
-rw-r--r--src/silx/resources/gui/icons/cube-back.svg (renamed from silx/resources/gui/icons/cube-back.svg)0
-rw-r--r--src/silx/resources/gui/icons/cube-bottom.png (renamed from silx/resources/gui/icons/cube-bottom.png)bin833 -> 833 bytes
-rw-r--r--src/silx/resources/gui/icons/cube-bottom.svg (renamed from silx/resources/gui/icons/cube-bottom.svg)0
-rw-r--r--src/silx/resources/gui/icons/cube-front.png (renamed from silx/resources/gui/icons/cube-front.png)bin708 -> 708 bytes
-rw-r--r--src/silx/resources/gui/icons/cube-front.svg (renamed from silx/resources/gui/icons/cube-front.svg)0
-rw-r--r--src/silx/resources/gui/icons/cube-left.png (renamed from silx/resources/gui/icons/cube-left.png)bin712 -> 712 bytes
-rw-r--r--src/silx/resources/gui/icons/cube-left.svg (renamed from silx/resources/gui/icons/cube-left.svg)0
-rw-r--r--src/silx/resources/gui/icons/cube-right.png (renamed from silx/resources/gui/icons/cube-right.png)bin701 -> 701 bytes
-rw-r--r--src/silx/resources/gui/icons/cube-right.svg (renamed from silx/resources/gui/icons/cube-right.svg)0
-rw-r--r--src/silx/resources/gui/icons/cube-rotate.png (renamed from silx/resources/gui/icons/cube-rotate.png)bin955 -> 955 bytes
-rw-r--r--src/silx/resources/gui/icons/cube-rotate.svg (renamed from silx/resources/gui/icons/cube-rotate.svg)0
-rw-r--r--src/silx/resources/gui/icons/cube-top.png (renamed from silx/resources/gui/icons/cube-top.png)bin767 -> 767 bytes
-rw-r--r--src/silx/resources/gui/icons/cube-top.svg (renamed from silx/resources/gui/icons/cube-top.svg)0
-rw-r--r--src/silx/resources/gui/icons/cube.png (renamed from silx/resources/gui/icons/cube.png)bin953 -> 953 bytes
-rw-r--r--src/silx/resources/gui/icons/cube.svg (renamed from silx/resources/gui/icons/cube.svg)0
-rw-r--r--src/silx/resources/gui/icons/description-description.png (renamed from silx/resources/gui/icons/description-description.png)bin756 -> 756 bytes
-rw-r--r--src/silx/resources/gui/icons/description-description.svg (renamed from silx/resources/gui/icons/description-description.svg)0
-rw-r--r--src/silx/resources/gui/icons/description-error.png (renamed from silx/resources/gui/icons/description-error.png)bin952 -> 952 bytes
-rw-r--r--src/silx/resources/gui/icons/description-error.svg (renamed from silx/resources/gui/icons/description-error.svg)0
-rw-r--r--src/silx/resources/gui/icons/description-name.png (renamed from silx/resources/gui/icons/description-name.png)bin822 -> 822 bytes
-rw-r--r--src/silx/resources/gui/icons/description-name.svg (renamed from silx/resources/gui/icons/description-name.svg)0
-rw-r--r--src/silx/resources/gui/icons/description-program.png (renamed from silx/resources/gui/icons/description-program.png)bin767 -> 767 bytes
-rw-r--r--src/silx/resources/gui/icons/description-program.svg (renamed from silx/resources/gui/icons/description-program.svg)0
-rw-r--r--src/silx/resources/gui/icons/description-title.png (renamed from silx/resources/gui/icons/description-title.png)bin707 -> 707 bytes
-rw-r--r--src/silx/resources/gui/icons/description-title.svg (renamed from silx/resources/gui/icons/description-title.svg)0
-rw-r--r--src/silx/resources/gui/icons/description-value.png (renamed from silx/resources/gui/icons/description-value.png)bin833 -> 833 bytes
-rw-r--r--src/silx/resources/gui/icons/description-value.svg (renamed from silx/resources/gui/icons/description-value.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/document-open.png (renamed from silx/resources/gui/icons/document-open.png)bin2676 -> 2676 bytes
-rw-r--r--src/silx/resources/gui/icons/document-open.svg (renamed from silx/resources/gui/icons/document-open.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/document-print.png (renamed from silx/resources/gui/icons/document-print.png)bin702 -> 702 bytes
-rw-r--r--src/silx/resources/gui/icons/document-print.svg (renamed from silx/resources/gui/icons/document-print.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/document-save.png (renamed from silx/resources/gui/icons/document-save.png)bin535 -> 535 bytes
-rw-r--r--src/silx/resources/gui/icons/document-save.svg (renamed from silx/resources/gui/icons/document-save.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/draw-brush.png (renamed from silx/resources/gui/icons/draw-brush.png)bin1466 -> 1466 bytes
-rw-r--r--src/silx/resources/gui/icons/draw-brush.svg (renamed from silx/resources/gui/icons/draw-brush.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/draw-pencil.png (renamed from silx/resources/gui/icons/draw-pencil.png)bin1055 -> 1055 bytes
-rw-r--r--src/silx/resources/gui/icons/draw-pencil.svg (renamed from silx/resources/gui/icons/draw-pencil.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/draw-rubber.png (renamed from silx/resources/gui/icons/draw-rubber.png)bin1154 -> 1154 bytes
-rw-r--r--src/silx/resources/gui/icons/draw-rubber.svg (renamed from silx/resources/gui/icons/draw-rubber.svg)0
-rw-r--r--src/silx/resources/gui/icons/edit-copy.png (renamed from silx/resources/gui/icons/edit-copy.png)bin2191 -> 2191 bytes
-rw-r--r--src/silx/resources/gui/icons/edit-copy.svg (renamed from silx/resources/gui/icons/edit-copy.svg)0
-rw-r--r--src/silx/resources/gui/icons/eye.png (renamed from silx/resources/gui/icons/eye.png)bin755 -> 755 bytes
-rw-r--r--src/silx/resources/gui/icons/eye.svg (renamed from silx/resources/gui/icons/eye.svg)0
-rw-r--r--src/silx/resources/gui/icons/first.png (renamed from silx/resources/gui/icons/first.png)bin1177 -> 1177 bytes
-rw-r--r--src/silx/resources/gui/icons/first.svg (renamed from silx/resources/gui/icons/first.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/folder.png (renamed from silx/resources/gui/icons/folder.png)bin2583 -> 2583 bytes
-rw-r--r--src/silx/resources/gui/icons/folder.svg (renamed from silx/resources/gui/icons/folder.svg)0
-rw-r--r--src/silx/resources/gui/icons/image-mask.png (renamed from silx/resources/gui/icons/image-mask.png)bin852 -> 852 bytes
-rw-r--r--src/silx/resources/gui/icons/image-mask.svg (renamed from silx/resources/gui/icons/image-mask.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/image-select-add.png (renamed from silx/resources/gui/icons/image-select-add.png)bin2531 -> 2531 bytes
-rw-r--r--src/silx/resources/gui/icons/image-select-add.svg (renamed from silx/resources/gui/icons/image-select-add.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/image-select-box.png (renamed from silx/resources/gui/icons/image-select-box.png)bin3036 -> 3036 bytes
-rw-r--r--src/silx/resources/gui/icons/image-select-box.svg (renamed from silx/resources/gui/icons/image-select-box.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/image-select-brush.png (renamed from silx/resources/gui/icons/image-select-brush.png)bin3300 -> 3300 bytes
-rw-r--r--src/silx/resources/gui/icons/image-select-brush.svg (renamed from silx/resources/gui/icons/image-select-brush.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/image-select-erase-rubber.png (renamed from silx/resources/gui/icons/image-select-erase-rubber.png)bin1638 -> 1638 bytes
-rw-r--r--src/silx/resources/gui/icons/image-select-erase-rubber.svg (renamed from silx/resources/gui/icons/image-select-erase-rubber.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/image-select-erase.png (renamed from silx/resources/gui/icons/image-select-erase.png)bin2286 -> 2286 bytes
-rw-r--r--src/silx/resources/gui/icons/image-select-erase.svg (renamed from silx/resources/gui/icons/image-select-erase.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/image.png (renamed from silx/resources/gui/icons/image.png)bin2572 -> 2572 bytes
-rw-r--r--src/silx/resources/gui/icons/image.svg (renamed from silx/resources/gui/icons/image.svg)0
-rw-r--r--src/silx/resources/gui/icons/item-0dim.png (renamed from silx/resources/gui/icons/item-0dim.png)bin305 -> 305 bytes
-rw-r--r--src/silx/resources/gui/icons/item-0dim.svg (renamed from silx/resources/gui/icons/item-0dim.svg)0
-rw-r--r--src/silx/resources/gui/icons/item-1dim.png (renamed from silx/resources/gui/icons/item-1dim.png)bin674 -> 674 bytes
-rw-r--r--src/silx/resources/gui/icons/item-1dim.svg (renamed from silx/resources/gui/icons/item-1dim.svg)0
-rw-r--r--src/silx/resources/gui/icons/item-2dim.png (renamed from silx/resources/gui/icons/item-2dim.png)bin233 -> 233 bytes
-rw-r--r--src/silx/resources/gui/icons/item-2dim.svg (renamed from silx/resources/gui/icons/item-2dim.svg)0
-rw-r--r--src/silx/resources/gui/icons/item-3dim.png (renamed from silx/resources/gui/icons/item-3dim.png)bin582 -> 582 bytes
-rw-r--r--src/silx/resources/gui/icons/item-3dim.svg (renamed from silx/resources/gui/icons/item-3dim.svg)0
-rw-r--r--src/silx/resources/gui/icons/item-ndim.png (renamed from silx/resources/gui/icons/item-ndim.png)bin947 -> 947 bytes
-rw-r--r--src/silx/resources/gui/icons/item-ndim.svg (renamed from silx/resources/gui/icons/item-ndim.svg)0
-rw-r--r--src/silx/resources/gui/icons/item-none.png (renamed from silx/resources/gui/icons/item-none.png)bin637 -> 637 bytes
-rw-r--r--src/silx/resources/gui/icons/item-none.svg (renamed from silx/resources/gui/icons/item-none.svg)0
-rw-r--r--src/silx/resources/gui/icons/item-object.png (renamed from silx/resources/gui/icons/item-object.png)bin836 -> 836 bytes
-rw-r--r--src/silx/resources/gui/icons/item-object.svg (renamed from silx/resources/gui/icons/item-object.svg)0
-rw-r--r--src/silx/resources/gui/icons/last.png (renamed from silx/resources/gui/icons/last.png)bin1111 -> 1111 bytes
-rw-r--r--src/silx/resources/gui/icons/last.svg (renamed from silx/resources/gui/icons/last.svg)0
-rw-r--r--src/silx/resources/gui/icons/layer-nx.png (renamed from silx/resources/gui/icons/layer-nx.png)bin459 -> 459 bytes
-rw-r--r--src/silx/resources/gui/icons/layer-nx.svg (renamed from silx/resources/gui/icons/layer-nx.svg)0
-rw-r--r--src/silx/resources/gui/icons/mask-clear-all.png (renamed from silx/resources/gui/icons/mask-clear-all.png)bin1383 -> 1383 bytes
-rw-r--r--src/silx/resources/gui/icons/mask-clear-all.svg (renamed from silx/resources/gui/icons/mask-clear-all.svg)0
-rw-r--r--src/silx/resources/gui/icons/mask-clear.png (renamed from silx/resources/gui/icons/mask-clear.png)bin1086 -> 1086 bytes
-rw-r--r--src/silx/resources/gui/icons/mask-clear.svg (renamed from silx/resources/gui/icons/mask-clear.svg)0
-rw-r--r--src/silx/resources/gui/icons/mask-invert.png (renamed from silx/resources/gui/icons/mask-invert.png)bin717 -> 717 bytes
-rw-r--r--src/silx/resources/gui/icons/mask-invert.svg (renamed from silx/resources/gui/icons/mask-invert.svg)0
-rw-r--r--src/silx/resources/gui/icons/math-amplitude.png (renamed from silx/resources/gui/icons/math-amplitude.png)bin526 -> 526 bytes
-rw-r--r--src/silx/resources/gui/icons/math-amplitude.svg (renamed from silx/resources/gui/icons/math-amplitude.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/math-average.png (renamed from silx/resources/gui/icons/math-average.png)bin571 -> 571 bytes
-rw-r--r--src/silx/resources/gui/icons/math-average.svg (renamed from silx/resources/gui/icons/math-average.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/math-derive.png (renamed from silx/resources/gui/icons/math-derive.png)bin593 -> 593 bytes
-rw-r--r--src/silx/resources/gui/icons/math-derive.svg (renamed from silx/resources/gui/icons/math-derive.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/math-energy.png (renamed from silx/resources/gui/icons/math-energy.png)bin645 -> 645 bytes
-rw-r--r--src/silx/resources/gui/icons/math-energy.svg (renamed from silx/resources/gui/icons/math-energy.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/math-fit.png (renamed from silx/resources/gui/icons/math-fit.png)bin768 -> 768 bytes
-rw-r--r--src/silx/resources/gui/icons/math-fit.svg (renamed from silx/resources/gui/icons/math-fit.svg)0
-rw-r--r--src/silx/resources/gui/icons/math-imaginary.png (renamed from silx/resources/gui/icons/math-imaginary.png)bin630 -> 630 bytes
-rw-r--r--src/silx/resources/gui/icons/math-imaginary.svg (renamed from silx/resources/gui/icons/math-imaginary.svg)0
-rw-r--r--src/silx/resources/gui/icons/math-mean.png (renamed from silx/resources/gui/icons/math-mean.png)bin1487 -> 1487 bytes
-rw-r--r--src/silx/resources/gui/icons/math-mean.svg (renamed from silx/resources/gui/icons/math-mean.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/math-normalize.png (renamed from silx/resources/gui/icons/math-normalize.png)bin653 -> 653 bytes
-rw-r--r--src/silx/resources/gui/icons/math-normalize.svg (renamed from silx/resources/gui/icons/math-normalize.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/math-peak-reset.png (renamed from silx/resources/gui/icons/math-peak-reset.png)bin1420 -> 1420 bytes
-rw-r--r--src/silx/resources/gui/icons/math-peak-reset.svg (renamed from silx/resources/gui/icons/math-peak-reset.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/math-peak-search.png (renamed from silx/resources/gui/icons/math-peak-search.png)bin2163 -> 2163 bytes
-rw-r--r--src/silx/resources/gui/icons/math-peak-search.svg2
-rwxr-xr-xsrc/silx/resources/gui/icons/math-peak.png (renamed from silx/resources/gui/icons/math-peak.png)bin829 -> 829 bytes
-rw-r--r--src/silx/resources/gui/icons/math-peak.svg (renamed from silx/resources/gui/icons/math-peak.svg)0
-rw-r--r--src/silx/resources/gui/icons/math-phase-color-log.png (renamed from silx/resources/gui/icons/math-phase-color-log.png)bin2256 -> 2256 bytes
-rw-r--r--src/silx/resources/gui/icons/math-phase-color-log.svg (renamed from silx/resources/gui/icons/math-phase-color-log.svg)0
-rw-r--r--src/silx/resources/gui/icons/math-phase-color.png (renamed from silx/resources/gui/icons/math-phase-color.png)bin2127 -> 2127 bytes
-rw-r--r--src/silx/resources/gui/icons/math-phase-color.svg (renamed from silx/resources/gui/icons/math-phase-color.svg)0
-rw-r--r--src/silx/resources/gui/icons/math-phase.png (renamed from silx/resources/gui/icons/math-phase.png)bin1868 -> 1868 bytes
-rw-r--r--src/silx/resources/gui/icons/math-phase.svg (renamed from silx/resources/gui/icons/math-phase.svg)0
-rw-r--r--src/silx/resources/gui/icons/math-real.png (renamed from silx/resources/gui/icons/math-real.png)bin749 -> 749 bytes
-rw-r--r--src/silx/resources/gui/icons/math-real.svg (renamed from silx/resources/gui/icons/math-real.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/math-sigma.png (renamed from silx/resources/gui/icons/math-sigma.png)bin744 -> 744 bytes
-rw-r--r--src/silx/resources/gui/icons/math-sigma.svg (renamed from silx/resources/gui/icons/math-sigma.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/math-smooth.png (renamed from silx/resources/gui/icons/math-smooth.png)bin1243 -> 1243 bytes
-rw-r--r--src/silx/resources/gui/icons/math-smooth.svg (renamed from silx/resources/gui/icons/math-smooth.svg)0
-rw-r--r--src/silx/resources/gui/icons/math-square-amplitude.png (renamed from silx/resources/gui/icons/math-square-amplitude.png)bin592 -> 592 bytes
-rw-r--r--src/silx/resources/gui/icons/math-square-amplitude.svg (renamed from silx/resources/gui/icons/math-square-amplitude.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/math-substract.png (renamed from silx/resources/gui/icons/math-substract.png)bin845 -> 845 bytes
-rw-r--r--src/silx/resources/gui/icons/math-substract.svg (renamed from silx/resources/gui/icons/math-substract.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/math-swap-sign.png (renamed from silx/resources/gui/icons/math-swap-sign.png)bin1007 -> 1007 bytes
-rw-r--r--src/silx/resources/gui/icons/math-swap-sign.svg (renamed from silx/resources/gui/icons/math-swap-sign.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/math-ymin-to-zero.png (renamed from silx/resources/gui/icons/math-ymin-to-zero.png)bin666 -> 666 bytes
-rw-r--r--src/silx/resources/gui/icons/math-ymin-to-zero.svg (renamed from silx/resources/gui/icons/math-ymin-to-zero.svg)0
-rw-r--r--src/silx/resources/gui/icons/median-filter.png (renamed from silx/resources/gui/icons/median-filter.png)bin694 -> 694 bytes
-rw-r--r--src/silx/resources/gui/icons/median-filter.svg (renamed from silx/resources/gui/icons/median-filter.svg)0
-rw-r--r--src/silx/resources/gui/icons/next.png (renamed from silx/resources/gui/icons/next.png)bin1092 -> 1092 bytes
-rw-r--r--src/silx/resources/gui/icons/next.svg (renamed from silx/resources/gui/icons/next.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/normal.png (renamed from silx/resources/gui/icons/normal.png)bin1264 -> 1264 bytes
-rw-r--r--src/silx/resources/gui/icons/normal.svg (renamed from silx/resources/gui/icons/normal.svg)0
-rw-r--r--src/silx/resources/gui/icons/nxdata-axis-add.png (renamed from silx/resources/gui/icons/nxdata-axis-add.png)bin686 -> 686 bytes
-rw-r--r--src/silx/resources/gui/icons/nxdata-axis-add.svg (renamed from silx/resources/gui/icons/nxdata-axis-add.svg)0
-rw-r--r--src/silx/resources/gui/icons/nxdata-axis-remove.png (renamed from silx/resources/gui/icons/nxdata-axis-remove.png)bin967 -> 967 bytes
-rw-r--r--src/silx/resources/gui/icons/nxdata-axis-remove.svg (renamed from silx/resources/gui/icons/nxdata-axis-remove.svg)0
-rw-r--r--src/silx/resources/gui/icons/nxdata-create.png (renamed from silx/resources/gui/icons/nxdata-create.png)bin867 -> 867 bytes
-rw-r--r--src/silx/resources/gui/icons/nxdata-create.svg (renamed from silx/resources/gui/icons/nxdata-create.svg)0
-rw-r--r--src/silx/resources/gui/icons/nxdata-remove.png (renamed from silx/resources/gui/icons/nxdata-remove.png)bin1265 -> 1265 bytes
-rw-r--r--src/silx/resources/gui/icons/nxdata-remove.svg (renamed from silx/resources/gui/icons/nxdata-remove.svg)0
-rw-r--r--src/silx/resources/gui/icons/pan.png (renamed from silx/resources/gui/icons/pan.png)bin526 -> 526 bytes
-rw-r--r--src/silx/resources/gui/icons/pan.svg (renamed from silx/resources/gui/icons/pan.svg)0
-rw-r--r--src/silx/resources/gui/icons/pixel-intensities.png (renamed from silx/resources/gui/icons/pixel-intensities.png)bin654 -> 654 bytes
-rw-r--r--src/silx/resources/gui/icons/pixel-intensities.svg (renamed from silx/resources/gui/icons/pixel-intensities.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/plot-grid.png (renamed from silx/resources/gui/icons/plot-grid.png)bin446 -> 446 bytes
-rw-r--r--src/silx/resources/gui/icons/plot-grid.svg (renamed from silx/resources/gui/icons/plot-grid.svg)0
-rw-r--r--src/silx/resources/gui/icons/plot-roi-above.png (renamed from silx/resources/gui/icons/plot-roi-above.png)bin999 -> 999 bytes
-rw-r--r--src/silx/resources/gui/icons/plot-roi-above.svg (renamed from silx/resources/gui/icons/plot-roi-above.svg)0
-rw-r--r--src/silx/resources/gui/icons/plot-roi-below.png (renamed from silx/resources/gui/icons/plot-roi-below.png)bin988 -> 988 bytes
-rw-r--r--src/silx/resources/gui/icons/plot-roi-below.svg (renamed from silx/resources/gui/icons/plot-roi-below.svg)0
-rw-r--r--src/silx/resources/gui/icons/plot-roi-between.png (renamed from silx/resources/gui/icons/plot-roi-between.png)bin1021 -> 1021 bytes
-rw-r--r--src/silx/resources/gui/icons/plot-roi-between.svg (renamed from silx/resources/gui/icons/plot-roi-between.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/plot-roi-reset.png (renamed from silx/resources/gui/icons/plot-roi-reset.png)bin2063 -> 2063 bytes
-rw-r--r--src/silx/resources/gui/icons/plot-roi-reset.svg (renamed from silx/resources/gui/icons/plot-roi-reset.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/plot-roi.png (renamed from silx/resources/gui/icons/plot-roi.png)bin903 -> 903 bytes
-rw-r--r--src/silx/resources/gui/icons/plot-roi.svg (renamed from silx/resources/gui/icons/plot-roi.svg)0
-rw-r--r--src/silx/resources/gui/icons/plot-symbols.png (renamed from silx/resources/gui/icons/plot-symbols.png)bin672 -> 672 bytes
-rw-r--r--src/silx/resources/gui/icons/plot-symbols.svg (renamed from silx/resources/gui/icons/plot-symbols.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/plot-toggle-points.png (renamed from silx/resources/gui/icons/plot-toggle-points.png)bin484 -> 484 bytes
-rw-r--r--src/silx/resources/gui/icons/plot-toggle-points.svg (renamed from silx/resources/gui/icons/plot-toggle-points.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/plot-widget.png (renamed from silx/resources/gui/icons/plot-widget.png)bin1093 -> 1093 bytes
-rw-r--r--src/silx/resources/gui/icons/plot-widget.svg (renamed from silx/resources/gui/icons/plot-widget.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/plot-window-image.png (renamed from silx/resources/gui/icons/plot-window-image.png)bin1188 -> 1188 bytes
-rw-r--r--src/silx/resources/gui/icons/plot-window-image.svg (renamed from silx/resources/gui/icons/plot-window-image.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/plot-window.png (renamed from silx/resources/gui/icons/plot-window.png)bin955 -> 955 bytes
-rw-r--r--src/silx/resources/gui/icons/plot-window.svg (renamed from silx/resources/gui/icons/plot-window.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/plot-xauto.png (renamed from silx/resources/gui/icons/plot-xauto.png)bin626 -> 626 bytes
-rw-r--r--src/silx/resources/gui/icons/plot-xauto.svg (renamed from silx/resources/gui/icons/plot-xauto.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/plot-xlog.png (renamed from silx/resources/gui/icons/plot-xlog.png)bin679 -> 679 bytes
-rw-r--r--src/silx/resources/gui/icons/plot-xlog.svg (renamed from silx/resources/gui/icons/plot-xlog.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/plot-yauto.png (renamed from silx/resources/gui/icons/plot-yauto.png)bin676 -> 676 bytes
-rw-r--r--src/silx/resources/gui/icons/plot-yauto.svg (renamed from silx/resources/gui/icons/plot-yauto.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/plot-ydown.png (renamed from silx/resources/gui/icons/plot-ydown.png)bin701 -> 701 bytes
-rw-r--r--src/silx/resources/gui/icons/plot-ydown.svg (renamed from silx/resources/gui/icons/plot-ydown.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/plot-ylog.png (renamed from silx/resources/gui/icons/plot-ylog.png)bin772 -> 772 bytes
-rw-r--r--src/silx/resources/gui/icons/plot-ylog.svg (renamed from silx/resources/gui/icons/plot-ylog.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/plot-yup.png (renamed from silx/resources/gui/icons/plot-yup.png)bin667 -> 667 bytes
-rw-r--r--src/silx/resources/gui/icons/plot-yup.svg (renamed from silx/resources/gui/icons/plot-yup.svg)0
-rw-r--r--src/silx/resources/gui/icons/pointing-hand.png (renamed from silx/resources/gui/icons/pointing-hand.png)bin680 -> 680 bytes
-rw-r--r--src/silx/resources/gui/icons/pointing-hand.svg (renamed from silx/resources/gui/icons/pointing-hand.svg)0
-rw-r--r--src/silx/resources/gui/icons/previous.png (renamed from silx/resources/gui/icons/previous.png)bin1151 -> 1151 bytes
-rw-r--r--src/silx/resources/gui/icons/previous.svg (renamed from silx/resources/gui/icons/previous.svg)0
-rw-r--r--src/silx/resources/gui/icons/process-working.mng (renamed from silx/resources/gui/icons/process-working.mng)bin15966 -> 15966 bytes
-rw-r--r--src/silx/resources/gui/icons/process-working/00.png (renamed from silx/resources/gui/icons/process-working/00.png)bin778 -> 778 bytes
-rw-r--r--src/silx/resources/gui/icons/process-working/01.png (renamed from silx/resources/gui/icons/process-working/01.png)bin789 -> 789 bytes
-rw-r--r--src/silx/resources/gui/icons/process-working/02.png (renamed from silx/resources/gui/icons/process-working/02.png)bin785 -> 785 bytes
-rw-r--r--src/silx/resources/gui/icons/process-working/03.png (renamed from silx/resources/gui/icons/process-working/03.png)bin785 -> 785 bytes
-rw-r--r--src/silx/resources/gui/icons/process-working/04.png (renamed from silx/resources/gui/icons/process-working/04.png)bin766 -> 766 bytes
-rw-r--r--src/silx/resources/gui/icons/process-working/05.png (renamed from silx/resources/gui/icons/process-working/05.png)bin777 -> 777 bytes
-rw-r--r--src/silx/resources/gui/icons/process-working/06.png (renamed from silx/resources/gui/icons/process-working/06.png)bin784 -> 784 bytes
-rw-r--r--src/silx/resources/gui/icons/process-working/07.png (renamed from silx/resources/gui/icons/process-working/07.png)bin783 -> 783 bytes
-rw-r--r--src/silx/resources/gui/icons/process-working/08.png (renamed from silx/resources/gui/icons/process-working/08.png)bin762 -> 762 bytes
-rw-r--r--src/silx/resources/gui/icons/process-working/09.png (renamed from silx/resources/gui/icons/process-working/09.png)bin781 -> 781 bytes
-rw-r--r--src/silx/resources/gui/icons/process-working/10.png (renamed from silx/resources/gui/icons/process-working/10.png)bin771 -> 771 bytes
-rw-r--r--src/silx/resources/gui/icons/process-working/11.png (renamed from silx/resources/gui/icons/process-working/11.png)bin768 -> 768 bytes
-rw-r--r--src/silx/resources/gui/icons/process-working/12.png (renamed from silx/resources/gui/icons/process-working/12.png)bin759 -> 759 bytes
-rw-r--r--src/silx/resources/gui/icons/process-working/13.png (renamed from silx/resources/gui/icons/process-working/13.png)bin767 -> 767 bytes
-rw-r--r--src/silx/resources/gui/icons/process-working/14.png (renamed from silx/resources/gui/icons/process-working/14.png)bin778 -> 778 bytes
-rw-r--r--src/silx/resources/gui/icons/process-working/15.png (renamed from silx/resources/gui/icons/process-working/15.png)bin760 -> 760 bytes
-rw-r--r--src/silx/resources/gui/icons/process-working/16.png (renamed from silx/resources/gui/icons/process-working/16.png)bin754 -> 754 bytes
-rw-r--r--src/silx/resources/gui/icons/process-working/17.png (renamed from silx/resources/gui/icons/process-working/17.png)bin782 -> 782 bytes
-rw-r--r--src/silx/resources/gui/icons/process-working/18.png (renamed from silx/resources/gui/icons/process-working/18.png)bin775 -> 775 bytes
-rw-r--r--src/silx/resources/gui/icons/process-working/19.png (renamed from silx/resources/gui/icons/process-working/19.png)bin764 -> 764 bytes
-rw-r--r--src/silx/resources/gui/icons/process-working/20.png (renamed from silx/resources/gui/icons/process-working/20.png)bin764 -> 764 bytes
-rw-r--r--src/silx/resources/gui/icons/process-working/21.png (renamed from silx/resources/gui/icons/process-working/21.png)bin772 -> 772 bytes
-rw-r--r--src/silx/resources/gui/icons/process-working/22.png (renamed from silx/resources/gui/icons/process-working/22.png)bin769 -> 769 bytes
-rw-r--r--src/silx/resources/gui/icons/process-working/23.png (renamed from silx/resources/gui/icons/process-working/23.png)bin773 -> 773 bytes
-rw-r--r--src/silx/resources/gui/icons/process-working/24.png (renamed from silx/resources/gui/icons/process-working/24.png)bin757 -> 757 bytes
-rw-r--r--src/silx/resources/gui/icons/process-working/25.png (renamed from silx/resources/gui/icons/process-working/25.png)bin759 -> 759 bytes
-rw-r--r--src/silx/resources/gui/icons/process-working/26.png (renamed from silx/resources/gui/icons/process-working/26.png)bin774 -> 774 bytes
-rw-r--r--src/silx/resources/gui/icons/process-working/27.png (renamed from silx/resources/gui/icons/process-working/27.png)bin766 -> 766 bytes
-rw-r--r--src/silx/resources/gui/icons/process-working/28.png (renamed from silx/resources/gui/icons/process-working/28.png)bin760 -> 760 bytes
-rw-r--r--src/silx/resources/gui/icons/process-working/29.png (renamed from silx/resources/gui/icons/process-working/29.png)bin777 -> 777 bytes
-rw-r--r--src/silx/resources/gui/icons/process-working/30.png (renamed from silx/resources/gui/icons/process-working/30.png)bin775 -> 775 bytes
-rw-r--r--src/silx/resources/gui/icons/profile-clear.png (renamed from silx/resources/gui/icons/profile-clear.png)bin917 -> 917 bytes
-rw-r--r--src/silx/resources/gui/icons/profile-clear.svg (renamed from silx/resources/gui/icons/profile-clear.svg)0
-rw-r--r--src/silx/resources/gui/icons/profile1D.png (renamed from silx/resources/gui/icons/profile1D.png)bin347 -> 347 bytes
-rw-r--r--src/silx/resources/gui/icons/profile1D.svg (renamed from silx/resources/gui/icons/profile1D.svg)0
-rw-r--r--src/silx/resources/gui/icons/profile2D.png (renamed from silx/resources/gui/icons/profile2D.png)bin1403 -> 1403 bytes
-rw-r--r--src/silx/resources/gui/icons/profile2D.svg (renamed from silx/resources/gui/icons/profile2D.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/remove.png (renamed from silx/resources/gui/icons/remove.png)bin680 -> 680 bytes
-rw-r--r--src/silx/resources/gui/icons/remove.svg2
-rw-r--r--src/silx/resources/gui/icons/rm.png (renamed from silx/resources/gui/icons/rm.png)bin348 -> 348 bytes
-rw-r--r--src/silx/resources/gui/icons/rm.svg (renamed from silx/resources/gui/icons/rm.svg)0
-rw-r--r--src/silx/resources/gui/icons/rotate-3d.png (renamed from silx/resources/gui/icons/rotate-3d.png)bin760 -> 760 bytes
-rw-r--r--src/silx/resources/gui/icons/rotate-3d.svg (renamed from silx/resources/gui/icons/rotate-3d.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/rudder.png (renamed from silx/resources/gui/icons/rudder.png)bin877 -> 877 bytes
-rw-r--r--src/silx/resources/gui/icons/rudder.svg (renamed from silx/resources/gui/icons/rudder.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/selected.png (renamed from silx/resources/gui/icons/selected.png)bin1411 -> 1411 bytes
-rw-r--r--src/silx/resources/gui/icons/selected.svg (renamed from silx/resources/gui/icons/selected.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/shape-circle-solid.png (renamed from silx/resources/gui/icons/shape-circle-solid.png)bin562 -> 562 bytes
-rw-r--r--src/silx/resources/gui/icons/shape-circle-solid.svg (renamed from silx/resources/gui/icons/shape-circle-solid.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/shape-circle.png (renamed from silx/resources/gui/icons/shape-circle.png)bin722 -> 722 bytes
-rw-r--r--src/silx/resources/gui/icons/shape-circle.svg (renamed from silx/resources/gui/icons/shape-circle.svg)0
-rw-r--r--src/silx/resources/gui/icons/shape-cross.png (renamed from silx/resources/gui/icons/shape-cross.png)bin356 -> 356 bytes
-rw-r--r--src/silx/resources/gui/icons/shape-cross.svg (renamed from silx/resources/gui/icons/shape-cross.svg)0
-rw-r--r--src/silx/resources/gui/icons/shape-diagonal-directed.png (renamed from silx/resources/gui/icons/shape-diagonal-directed.png)bin542 -> 542 bytes
-rw-r--r--src/silx/resources/gui/icons/shape-diagonal-directed.svg (renamed from silx/resources/gui/icons/shape-diagonal-directed.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/shape-diagonal.png (renamed from silx/resources/gui/icons/shape-diagonal.png)bin461 -> 461 bytes
-rw-r--r--src/silx/resources/gui/icons/shape-diagonal.svg (renamed from silx/resources/gui/icons/shape-diagonal.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/shape-ellipse-solid.png (renamed from silx/resources/gui/icons/shape-ellipse-solid.png)bin541 -> 541 bytes
-rw-r--r--src/silx/resources/gui/icons/shape-ellipse-solid.svg (renamed from silx/resources/gui/icons/shape-ellipse-solid.svg)0
-rw-r--r--src/silx/resources/gui/icons/shape-ellipse.png (renamed from silx/resources/gui/icons/shape-ellipse.png)bin643 -> 643 bytes
-rw-r--r--src/silx/resources/gui/icons/shape-ellipse.svg (renamed from silx/resources/gui/icons/shape-ellipse.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/shape-horizontal.png (renamed from silx/resources/gui/icons/shape-horizontal.png)bin301 -> 301 bytes
-rw-r--r--src/silx/resources/gui/icons/shape-horizontal.svg (renamed from silx/resources/gui/icons/shape-horizontal.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/shape-polygon.png (renamed from silx/resources/gui/icons/shape-polygon.png)bin819 -> 819 bytes
-rw-r--r--src/silx/resources/gui/icons/shape-polygon.svg (renamed from silx/resources/gui/icons/shape-polygon.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/shape-rectangle.png (renamed from silx/resources/gui/icons/shape-rectangle.png)bin337 -> 337 bytes
-rw-r--r--src/silx/resources/gui/icons/shape-rectangle.svg (renamed from silx/resources/gui/icons/shape-rectangle.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/shape-square.png (renamed from silx/resources/gui/icons/shape-square.png)bin417 -> 417 bytes
-rw-r--r--src/silx/resources/gui/icons/shape-square.svg (renamed from silx/resources/gui/icons/shape-square.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/shape-vertical.png (renamed from silx/resources/gui/icons/shape-vertical.png)bin294 -> 294 bytes
-rw-r--r--src/silx/resources/gui/icons/shape-vertical.svg (renamed from silx/resources/gui/icons/shape-vertical.svg)0
-rw-r--r--src/silx/resources/gui/icons/side-histograms.pngbin0 -> 518 bytes
-rw-r--r--src/silx/resources/gui/icons/side-histograms.svg2
-rwxr-xr-xsrc/silx/resources/gui/icons/silx.png (renamed from silx/resources/gui/icons/silx.png)bin2048 -> 2048 bytes
-rw-r--r--src/silx/resources/gui/icons/silx.svg (renamed from silx/resources/gui/icons/silx.svg)0
-rw-r--r--src/silx/resources/gui/icons/slice-cross.png (renamed from silx/resources/gui/icons/slice-cross.png)bin1057 -> 1057 bytes
-rw-r--r--src/silx/resources/gui/icons/slice-cross.svg (renamed from silx/resources/gui/icons/slice-cross.svg)0
-rw-r--r--src/silx/resources/gui/icons/slice-horizontal.png (renamed from silx/resources/gui/icons/slice-horizontal.png)bin967 -> 967 bytes
-rw-r--r--src/silx/resources/gui/icons/slice-horizontal.svg (renamed from silx/resources/gui/icons/slice-horizontal.svg)0
-rw-r--r--src/silx/resources/gui/icons/slice-vertical.png (renamed from silx/resources/gui/icons/slice-vertical.png)bin1023 -> 1023 bytes
-rw-r--r--src/silx/resources/gui/icons/slice-vertical.svg (renamed from silx/resources/gui/icons/slice-vertical.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/sliders-off.png (renamed from silx/resources/gui/icons/sliders-off.png)bin1111 -> 1111 bytes
-rw-r--r--src/silx/resources/gui/icons/sliders-off.svg (renamed from silx/resources/gui/icons/sliders-off.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/sliders-on.png (renamed from silx/resources/gui/icons/sliders-on.png)bin691 -> 691 bytes
-rw-r--r--src/silx/resources/gui/icons/sliders-on.svg (renamed from silx/resources/gui/icons/sliders-on.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/spec.png (renamed from silx/resources/gui/icons/spec.png)bin1044 -> 1044 bytes
-rw-r--r--src/silx/resources/gui/icons/spec.svg (renamed from silx/resources/gui/icons/spec.svg)0
-rw-r--r--src/silx/resources/gui/icons/stats-active-items.png (renamed from silx/resources/gui/icons/stats-active-items.png)bin1521 -> 1521 bytes
-rw-r--r--src/silx/resources/gui/icons/stats-active-items.svg (renamed from silx/resources/gui/icons/stats-active-items.svg)0
-rw-r--r--src/silx/resources/gui/icons/stats-visible-data.png (renamed from silx/resources/gui/icons/stats-visible-data.png)bin662 -> 662 bytes
-rw-r--r--src/silx/resources/gui/icons/stats-visible-data.svg (renamed from silx/resources/gui/icons/stats-visible-data.svg)0
-rw-r--r--src/silx/resources/gui/icons/stats-whole-data.png (renamed from silx/resources/gui/icons/stats-whole-data.png)bin923 -> 923 bytes
-rw-r--r--src/silx/resources/gui/icons/stats-whole-data.svg (renamed from silx/resources/gui/icons/stats-whole-data.svg)0
-rw-r--r--src/silx/resources/gui/icons/stats-whole-items.png (renamed from silx/resources/gui/icons/stats-whole-items.png)bin1333 -> 1333 bytes
-rw-r--r--src/silx/resources/gui/icons/stats-whole-items.svg (renamed from silx/resources/gui/icons/stats-whole-items.svg)0
-rw-r--r--src/silx/resources/gui/icons/tree-collapse-all.png (renamed from silx/resources/gui/icons/tree-collapse-all.png)bin508 -> 508 bytes
-rw-r--r--src/silx/resources/gui/icons/tree-collapse-all.svg (renamed from silx/resources/gui/icons/tree-collapse-all.svg)0
-rw-r--r--src/silx/resources/gui/icons/tree-expand-all.png (renamed from silx/resources/gui/icons/tree-expand-all.png)bin602 -> 602 bytes
-rw-r--r--src/silx/resources/gui/icons/tree-expand-all.svg (renamed from silx/resources/gui/icons/tree-expand-all.svg)0
-rw-r--r--src/silx/resources/gui/icons/tree-sort.png (renamed from silx/resources/gui/icons/tree-sort.png)bin655 -> 655 bytes
-rw-r--r--src/silx/resources/gui/icons/tree-sort.svg (renamed from silx/resources/gui/icons/tree-sort.svg)0
-rw-r--r--src/silx/resources/gui/icons/view-1d.png (renamed from silx/resources/gui/icons/view-1d.png)bin881 -> 881 bytes
-rw-r--r--src/silx/resources/gui/icons/view-1d.svg (renamed from silx/resources/gui/icons/view-1d.svg)0
-rw-r--r--src/silx/resources/gui/icons/view-2d-stack.png (renamed from silx/resources/gui/icons/view-2d-stack.png)bin710 -> 710 bytes
-rw-r--r--src/silx/resources/gui/icons/view-2d-stack.svg (renamed from silx/resources/gui/icons/view-2d-stack.svg)0
-rw-r--r--src/silx/resources/gui/icons/view-2d.png (renamed from silx/resources/gui/icons/view-2d.png)bin304 -> 304 bytes
-rw-r--r--src/silx/resources/gui/icons/view-2d.svg (renamed from silx/resources/gui/icons/view-2d.svg)0
-rw-r--r--src/silx/resources/gui/icons/view-3d.png (renamed from silx/resources/gui/icons/view-3d.png)bin1073 -> 1073 bytes
-rw-r--r--src/silx/resources/gui/icons/view-3d.svg (renamed from silx/resources/gui/icons/view-3d.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/view-fullscreen.png (renamed from silx/resources/gui/icons/view-fullscreen.png)bin1829 -> 1829 bytes
-rw-r--r--src/silx/resources/gui/icons/view-fullscreen.svg (renamed from silx/resources/gui/icons/view-fullscreen.svg)0
-rw-r--r--src/silx/resources/gui/icons/view-hdf5.png (renamed from silx/resources/gui/icons/view-hdf5.png)bin1347 -> 1347 bytes
-rw-r--r--src/silx/resources/gui/icons/view-hdf5.svg (renamed from silx/resources/gui/icons/view-hdf5.svg)0
-rw-r--r--src/silx/resources/gui/icons/view-nexus.png (renamed from silx/resources/gui/icons/view-nexus.png)bin1332 -> 1332 bytes
-rw-r--r--src/silx/resources/gui/icons/view-nexus.svg (renamed from silx/resources/gui/icons/view-nexus.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/view-nofullscreen.png (renamed from silx/resources/gui/icons/view-nofullscreen.png)bin1799 -> 1799 bytes
-rw-r--r--src/silx/resources/gui/icons/view-nofullscreen.svg (renamed from silx/resources/gui/icons/view-nofullscreen.svg)0
-rw-r--r--src/silx/resources/gui/icons/view-raw.png (renamed from silx/resources/gui/icons/view-raw.png)bin641 -> 641 bytes
-rw-r--r--src/silx/resources/gui/icons/view-raw.svg (renamed from silx/resources/gui/icons/view-raw.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/view-refresh.png (renamed from silx/resources/gui/icons/view-refresh.png)bin1184 -> 1184 bytes
-rw-r--r--src/silx/resources/gui/icons/view-refresh.svg (renamed from silx/resources/gui/icons/view-refresh.svg)0
-rw-r--r--src/silx/resources/gui/icons/view-text.png (renamed from silx/resources/gui/icons/view-text.png)bin872 -> 872 bytes
-rw-r--r--src/silx/resources/gui/icons/view-text.svg (renamed from silx/resources/gui/icons/view-text.svg)0
-rwxr-xr-xsrc/silx/resources/gui/icons/window-new.png (renamed from silx/resources/gui/icons/window-new.png)bin698 -> 698 bytes
-rw-r--r--src/silx/resources/gui/icons/window-new.svg (renamed from silx/resources/gui/icons/window-new.svg)0
-rw-r--r--src/silx/resources/gui/icons/zoom-back.png (renamed from silx/resources/gui/icons/zoom-back.png)bin1432 -> 1432 bytes
-rw-r--r--src/silx/resources/gui/icons/zoom-back.svg2
-rwxr-xr-xsrc/silx/resources/gui/icons/zoom-in.png (renamed from silx/resources/gui/icons/zoom-in.png)bin1612 -> 1612 bytes
-rw-r--r--src/silx/resources/gui/icons/zoom-in.svg2
-rwxr-xr-xsrc/silx/resources/gui/icons/zoom-original.png (renamed from silx/resources/gui/icons/zoom-original.png)bin1518 -> 1518 bytes
-rw-r--r--src/silx/resources/gui/icons/zoom-original.svg2
-rwxr-xr-xsrc/silx/resources/gui/icons/zoom-out.png (renamed from silx/resources/gui/icons/zoom-out.png)bin1567 -> 1567 bytes
-rw-r--r--src/silx/resources/gui/icons/zoom-out.svg2
-rwxr-xr-xsrc/silx/resources/gui/icons/zoom.png (renamed from silx/resources/gui/icons/zoom.png)bin1448 -> 1448 bytes
-rw-r--r--src/silx/resources/gui/icons/zoom.svg2
-rw-r--r--src/silx/resources/gui/logo/silx.png (renamed from silx/resources/gui/logo/silx.png)bin21257 -> 21257 bytes
-rw-r--r--src/silx/resources/gui/logo/silx.svg (renamed from silx/resources/gui/logo/silx.svg)0
-rw-r--r--src/silx/resources/opencl/addition.cl (renamed from silx/resources/opencl/addition.cl)0
-rw-r--r--src/silx/resources/opencl/array_utils.cl (renamed from silx/resources/opencl/array_utils.cl)0
-rw-r--r--src/silx/resources/opencl/backproj.cl (renamed from silx/resources/opencl/backproj.cl)0
-rw-r--r--src/silx/resources/opencl/backproj_helper.cl (renamed from silx/resources/opencl/backproj_helper.cl)0
-rw-r--r--src/silx/resources/opencl/bitonic.cl (renamed from silx/resources/opencl/bitonic.cl)0
-rw-r--r--src/silx/resources/opencl/codec/byte_offset.cl (renamed from silx/resources/opencl/codec/byte_offset.cl)0
-rw-r--r--src/silx/resources/opencl/convolution.cl (renamed from silx/resources/opencl/convolution.cl)0
-rw-r--r--src/silx/resources/opencl/convolution_textures.cl (renamed from silx/resources/opencl/convolution_textures.cl)0
-rw-r--r--src/silx/resources/opencl/doubleword.cl (renamed from silx/resources/opencl/doubleword.cl)0
-rw-r--r--src/silx/resources/opencl/image/cast.cl (renamed from silx/resources/opencl/image/cast.cl)0
-rw-r--r--src/silx/resources/opencl/image/histogram.cl (renamed from silx/resources/opencl/image/histogram.cl)0
-rw-r--r--src/silx/resources/opencl/image/map.cl (renamed from silx/resources/opencl/image/map.cl)0
-rw-r--r--src/silx/resources/opencl/image/max_min.cl (renamed from silx/resources/opencl/image/max_min.cl)0
-rw-r--r--src/silx/resources/opencl/kahan.cl (renamed from silx/resources/opencl/kahan.cl)0
-rw-r--r--src/silx/resources/opencl/linalg.cl (renamed from silx/resources/opencl/linalg.cl)0
-rw-r--r--src/silx/resources/opencl/medfilt.cl (renamed from silx/resources/opencl/medfilt.cl)0
-rw-r--r--src/silx/resources/opencl/preprocess.cl (renamed from silx/resources/opencl/preprocess.cl)0
-rw-r--r--src/silx/resources/opencl/proj.cl (renamed from silx/resources/opencl/proj.cl)0
-rw-r--r--src/silx/resources/opencl/sparse.cl (renamed from silx/resources/opencl/sparse.cl)0
-rw-r--r--src/silx/resources/opencl/statistics.cl (renamed from silx/resources/opencl/statistics.cl)0
-rw-r--r--src/silx/setup.py54
-rw-r--r--src/silx/sx/__init__.py (renamed from silx/sx/__init__.py)0
-rw-r--r--src/silx/sx/_plot.py625
-rw-r--r--src/silx/sx/_plot3d.py (renamed from silx/sx/_plot3d.py)0
-rw-r--r--src/silx/test/__init__.py53
-rw-r--r--src/silx/test/test_resources.py187
-rw-r--r--src/silx/test/test_sx.py265
-rw-r--r--src/silx/test/test_version.py38
-rw-r--r--src/silx/test/utils.py198
-rw-r--r--src/silx/third_party/EdfFile.py (renamed from silx/third_party/EdfFile.py)0
-rw-r--r--src/silx/third_party/TiffIO.py (renamed from silx/third_party/TiffIO.py)0
-rw-r--r--src/silx/third_party/__init__.py (renamed from silx/third_party/__init__.py)0
-rw-r--r--src/silx/third_party/scipy_spatial.py (renamed from silx/third_party/scipy_spatial.py)0
-rw-r--r--src/silx/third_party/setup.py49
-rw-r--r--src/silx/utils/ExternalResources.py321
-rw-r--r--src/silx/utils/__init__.py (renamed from silx/utils/__init__.py)0
-rw-r--r--src/silx/utils/_have_openmp.pxd49
-rw-r--r--src/silx/utils/array_like.py595
-rw-r--r--src/silx/utils/debug.py100
-rw-r--r--src/silx/utils/deprecation.py (renamed from silx/utils/deprecation.py)0
-rw-r--r--src/silx/utils/enum.py (renamed from silx/utils/enum.py)0
-rw-r--r--src/silx/utils/exceptions.py (renamed from silx/utils/exceptions.py)0
-rw-r--r--src/silx/utils/files.py (renamed from silx/utils/files.py)0
-rw-r--r--src/silx/utils/html.py37
-rw-r--r--src/silx/utils/include/silx_store_openmp.h (renamed from silx/utils/include/silx_store_openmp.h)0
-rw-r--r--src/silx/utils/launcher.py (renamed from silx/utils/launcher.py)0
-rwxr-xr-xsrc/silx/utils/number.py (renamed from silx/utils/number.py)0
-rw-r--r--src/silx/utils/property.py (renamed from silx/utils/property.py)0
-rw-r--r--src/silx/utils/proxy.py208
-rw-r--r--src/silx/utils/retry.py (renamed from silx/utils/retry.py)0
-rw-r--r--src/silx/utils/setup.py (renamed from silx/utils/setup.py)0
-rwxr-xr-xsrc/silx/utils/test/__init__.py24
-rw-r--r--src/silx/utils/test/test_array_like.py430
-rw-r--r--src/silx/utils/test/test_debug.py88
-rw-r--r--src/silx/utils/test/test_deprecation.py96
-rw-r--r--src/silx/utils/test/test_enum.py85
-rw-r--r--src/silx/utils/test/test_external_resources.py89
-rw-r--r--src/silx/utils/test/test_launcher.py191
-rw-r--r--src/silx/utils/test/test_launcher_command.py (renamed from silx/utils/test/test_launcher_command.py)0
-rw-r--r--src/silx/utils/test/test_number.py175
-rw-r--r--src/silx/utils/test/test_proxy.py330
-rw-r--r--src/silx/utils/test/test_retry.py169
-rwxr-xr-xsrc/silx/utils/test/test_testutils.py94
-rw-r--r--src/silx/utils/test/test_weakref.py315
-rwxr-xr-xsrc/silx/utils/testutils.py351
-rw-r--r--src/silx/utils/weakref.py (renamed from silx/utils/weakref.py)0
-rw-r--r--version.py120
1449 files changed, 127781 insertions, 128549 deletions
diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index 3556fbb..4e99a93 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -1,6 +1,134 @@
Change Log
==========
+1.0.0: 2021/11/XX
+-----------------
+
+This the first version of `silx` supporting `PySide6` (for `Qt6`) and using `pytest` to run the tests.
+
+* `silx view`:
+
+ * Added Windows installer generation (PR #3548)
+ * Updated 'About' dialog (#3547, #3475)
+ * Fixed: Keep curve legend selection with changing dimensions (PR #3529)
+ * Fixed: Increase max number of opened file at start-up (PR #3545)
+
+* `silx.gui`:
+
+ * Added PySide6 support (PR #3486, #3528, #3479, #3542, #3549, #3478, #3481):
+ * Removed support of PyQt4 / Pyside (PR #3423, #3424, #3480, #3482)
+ * `silx.gui.colors`:
+
+ * Fixed duplicated logs when colormap vmin/vmax are not valid (PR #3471)
+
+ * `silx.gui.plot`:
+
+ * `silx.gui.plot.actions`:
+
+ * `silx.gui.plot.actions.fit`:
+
+ * Updated behaviour of fitted item auto update (PR #3532)
+
+ * `silx.gui.plot.actions.histogram`:
+
+ * Enhanced: Allow user to change histogram nbins and range (PR #3514, #3514)
+ * Updated `PixelIntensitiesHistoAction` to use `PlotWidget.selection` (PR #3408)
+ * Fixed issue when the whole image is masked (PR #3544)
+ * Fixed error on macOS 11 with 3D display in `silx view` (PR #3544)
+
+ * `silx.gui.plot.CompareImages`:
+
+ * Fixed `colormap`: avoid forcing vmin and vmax when not in 'HORIZONTAL_LINE' or 'VERTICAL_LINE' mode (PR #3510)
+
+ * `silx.gui.plot.items`:
+
+ * Added 'image_aggregated.ImageDataAggregated': item allowing to aggregate image data before display (PR #3503)
+ * Fixed `ArcROI.setGeometry` (fix #3492)
+
+ * `silx.gui.plot.ImageStack`:
+
+ * Enhanced management of the `animation thread` (PR #3440, PR #3441)
+
+ * `silx.gui.plot.ImageView`:
+
+ * Added action to show/hide the side histogram (PR #3488)
+ * Added 'resetzoom' parameter to 'ImageView.setImage' (PR #3488)
+ * Added empty array support to 'ImageView.setImage' (PR #3530)
+ * Added aggregation mode action (PR #3536)
+ * Added support of RGB and RGBA images (PR #3487)
+ * Updated 'imageview' example with a '--live' option (PR #3488)
+ * Fixed profile window, added `setProfileWindowBehavior` method (PR #3457)
+ * Fixed issue with profile window size (PR #3455)
+
+ * `silx.gui.plot.PlotWidget`:
+
+ * Fixed update of `Scatter` item binned statistics visualization (PR #3452)
+ * Fixed OpenGL backend memory leak (PR #3453)
+ * Enhanced: Optimized scatter when rendered as regular grid with the OpenGL backend (PR #3447)
+ * Enhanced axis limits management by the OpenGL backend (PR #3504)
+ * Enhanced control of repaint (PR #3449)
+ * Enhanced text label background rendering with OpenGL backend (PR #3565)
+
+ * `silx.gui.plot.PlotWindow`:
+
+ * Fixed returned action from 'getKeepDataAspectRatioAction' (PR #3500)
+
+ * `silx.gui.plot3d`:
+
+ * Fixed picking on highdpi screen (PR #3550)
+ * Fixed issue in parameter tree (PR #3550)
+
+* `silx.io`:
+
+ * Added read support for FIO files (PR #3539) thanks to tifuchs contribution
+ * `silx.io.dictdump`:
+
+ * Fixed missing conversion of the key (PR #3505) thanks to rnwatanabe contribution
+ * Extract update modes list to a constant global variable (PR #3460) thanks to jpcbertoldo
+
+ * `silx.io.convert`:
+
+ * Enhanced `write_to_h5`: `infile` parameter can now also be a HDF5 file as input (PR #3511)
+
+ * `silx.io.h5py_utils`:
+
+ * Added support of `locking` argument from the h5py.File when possible (PR #3554)
+ * Added log a critical message for unsupported versions of libhdf5 (PR #3533)
+
+ * `silx.io.spech5`:
+
+ * Enhanced: Improve robustness (PR #3507, #3463)
+
+ * `silx.io.url`:
+
+ * Fixed `is_absolute` in the case the `file_path()` returns None (PR #3437)
+
+ * `silx.io.utils`:
+
+ * Added 'silx.io.utils.visitall': provides a visitor of all items including links that works for both `commonh5` and `h5py` (PR #3511)
+
+* `silx.math`:
+
+ * `silx.math.colormap`:
+
+ * Added `apply_colormap` function (PR #3525)
+ * Enhanced `cmap` error messages (PR #3522)
+
+* `silx.opencl`:
+
+ * Added description of compute capabilities for Ampere generation GPU from Nvidia (PR #3535)
+ * Added doubleword OpenCL library (PR #3466, PR #3472)
+
+* Miscellaneous:
+
+ * Enhanced: Setup the project to use `pytest` (PR #3431, #3516, #3526)
+ * Enhanced: Minor test clean up (PR #3515, #3508)
+ * Updated project structure: move `silx` sources in `src/silx` (PR #3412)
+ * Fixed 'run_test.py --qt-binding' option (PR #3527)
+ * Fixed support of numpy 1.21rc1 (PR ##3476)
+ * Removed `six` dependency (PR #3483)
+
+
0.15.2: 2021/06/21
------------------
@@ -31,7 +159,6 @@ Minor release:
* Fixed profile window default behavior (PR #3458)
* Added `setProfileWindowBehavior` method (PR #3458)
-
0.15.0: 2021/03/18
------------------
@@ -101,7 +228,6 @@ Main new features are the `silx.io.h5py_utils` module which provides `h5py` conc
* Fixed debian packaging (PR #3362)
* Fixed `silx test` application on Windows (PR #3411)
-
0.14.1: 2021/04/30
------------------
@@ -110,7 +236,6 @@ This is a bug-fix version of silx.
* silx.gui.plot: Fixed `PlotWidget` OpenGL backend memory leak (PR #3445)
* silx.gui.utils.glutils: Fixed `isOpenGLAvailable` (PR #3356)
-
0.14.0: 2020/12/11
------------------
diff --git a/MANIFEST.in b/MANIFEST.in
index da024c2..5ee9a8d 100644
--- a/MANIFEST.in
+++ b/MANIFEST.in
@@ -4,18 +4,17 @@ include copyright
include LICENSE
include MANIFEST.in
include run_tests.py
-include version.py
include stdeb.cfg
include build-deb.sh
include requirements.txt
include requirements-dev.txt
include pyproject.toml
-recursive-include silx *.pyx *.pxd *.pxi
-recursive-include silx *.h *.c *.hpp *.cpp
+recursive-include src/silx *.pyx *.pxd *.pxi
+recursive-include src/silx *.h *.c *.hpp *.cpp
recursive-include doc/source *.py *.rst *.png *.ico *.ipynb
global-exclude .ipynb_checkpoints/*
recursive-include qtdesigner_plugins *.py *.rst
-recursive-include silx/resources *
+recursive-include src/silx/resources *
recursive-include examples *
recursive-include package *
diff --git a/PKG-INFO b/PKG-INFO
index 04ec406..43179ac 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,13 +1,13 @@
Metadata-Version: 2.1
Name: silx
-Version: 0.15.2
+Version: 1.0.0
Summary: Software library for X-ray data analysis
Home-page: http://www.silx.org/
Author: data analysis unit
Author-email: silx@esrf.fr
License: UNKNOWN
Platform: UNKNOWN
-Classifier: Development Status :: 4 - Beta
+Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Console
Classifier: Environment :: MacOS X
Classifier: Environment :: Win32 (MS Windows)
@@ -26,12 +26,16 @@ Classifier: Topic :: Scientific/Engineering :: Physics
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.5
Provides-Extra: full
+Provides-Extra: test
License-File: LICENSE
silx toolkit
============
+.. |silxView| image:: http://www.silx.org/doc/silx/img/silx-view-v1-0.gif
+ :height: 480px
+
The purpose of the *silx* project is to provide a collection of Python packages to support the
development of data assessment, reduction and analysis applications at synchrotron
radiation facilities.
@@ -59,8 +63,12 @@ The current version features:
* a set of applications:
* a unified viewer (*silx view filename*) for HDF5, SPEC and image file formats
+
+ |silxView|
+
* a unified converter to HDF5 format (*silx convert filename*)
+
Installation
------------
diff --git a/README.rst b/README.rst
index 37915ef..5b8a3ca 100644
--- a/README.rst
+++ b/README.rst
@@ -2,6 +2,9 @@
silx toolkit
============
+.. |silxView| image:: http://www.silx.org/doc/silx/img/silx-view-v1-0.gif
+ :height: 480px
+
The purpose of the *silx* project is to provide a collection of Python packages to support the
development of data assessment, reduction and analysis applications at synchrotron
radiation facilities.
@@ -29,8 +32,12 @@ The current version features:
* a set of applications:
* a unified viewer (*silx view filename*) for HDF5, SPEC and image file formats
+
+ |silxView|
+
* a unified converter to HDF5 format (*silx convert filename*)
+
Installation
------------
diff --git a/build-deb.sh b/build-deb.sh
index 25718f3..23b0a86 100755
--- a/build-deb.sh
+++ b/build-deb.sh
@@ -3,7 +3,7 @@
# Project: Silx
# https://github.com/silx-kit/silx
#
-# Copyright (C) 2015-2020 European Synchrotron Radiation Facility, Grenoble, France
+# Copyright (C) 2015-2021 European Synchrotron Radiation Facility, Grenoble, France
#
# Principal author: Jérôme Kieffer (Jerome.Kieffer@ESRF.eu)
#
@@ -29,9 +29,6 @@
project=silx
source_project=silx
-version=$(python3 -c"import version; print(version.version)")
-strictversion=$(python3 -c"import version; print(version.strictversion)")
-debianversion=$(python3 -c"import version; print(version.debianversion)")
deb_name=$(echo "$source_project" | tr '[:upper:]' '[:lower:]')
@@ -66,6 +63,13 @@ project_directory="`( cd \"$project_directory\" && pwd )`" # absolutized
dist_directory=${project_directory}/dist/${target_system}
build_directory=${project_directory}/build/${target_system}
+# Get version info
+cd ${project_directory}/src/${project}
+version=$(python3 -c"import _version; print(_version.version)")
+strictversion=$(python3 -c"import _version; print(_version.strictversion)")
+debianversion=$(python3 -c"import _version; print(_version.debianversion)")
+cd ${project_directory}
+
if [ -d /usr/lib/ccache ];
then
export PATH=/usr/lib/ccache:$PATH
diff --git a/debian/changelog b/debian/changelog
index 32bffb9..b7953b8 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+silx (1.0.0+dfsg-1) unstable; urgency=medium
+
+ * New upstream version 1.0.0+dfsg
+
+ -- Picca Frédéric-Emmanuel <picca@debian.org> Wed, 02 Feb 2022 14:43:11 +0100
+
silx (0.15.2+dfsg-3) unstable; urgency=medium
* fix FTBFS by skipping two tests
diff --git a/debian/control b/debian/control
index 0e40824..c11ab6d 100644
--- a/debian/control
+++ b/debian/control
@@ -1,41 +1,44 @@
Source: silx
Maintainer: Debian Science Maintainers <debian-science-maintainers@lists.alioth.debian.org>
-Uploaders: Jerome Kieffer <jerome.kieffer@esrf.fr>,
- Picca Frédéric-Emmanuel <picca@debian.org>,
- Alexandre Marie <alexandre.marie@synchrotron-soleil.fr>
+Uploaders:
+ Jerome Kieffer <jerome.kieffer@esrf.fr>,
+ Picca Frédéric-Emmanuel <picca@debian.org>,
+ Alexandre Marie <alexandre.marie@synchrotron-soleil.fr>,
Section: science
Priority: optional
-Build-Depends: cython3,
- debhelper-compat (= 13),
- dh-python,
- dh-sequence-numpy3,
- dh-sequence-python3,
- help2man,
- ipython3,
- python3-all-dev,
- python3-fabio,
- python3-h5py,
- python3-mako,
- python3-matplotlib,
- python3-numpy,
- python3-opengl,
- python3-pil,
- python3-pyopencl,
- python3-pyqt5,
- python3-pyqt5.qtopengl,
- python3-pyqt5.qtsvg,
- python3-qtconsole,
- python3-scipy,
- python3-setuptools,
- xauth,
- xvfb
+Build-Depends:
+ cython3,
+ debhelper-compat (= 13),
+ dh-python,
+ dh-sequence-numpy3,
+ dh-sequence-python3,
+ help2man,
+ ipython3,
+ python3-all-dev,
+ python3-fabio,
+ python3-h5py,
+ python3-mako,
+ python3-matplotlib,
+ python3-numpy,
+ python3-opengl,
+ python3-pil,
+ python3-pyopencl,
+ python3-pyqt5,
+ python3-pyqt5.qtopengl,
+ python3-pyqt5.qtsvg,
+ python3-pytest <!nocheck>,
+ python3-qtconsole,
+ python3-scipy,
+ python3-setuptools,
+ xauth,
+ xvfb,
Build-Depends-Indep:
- dh-sequence-sphinxdoc <!nodoc>,
- pandoc <!nodoc>,
- python3-nbsphinx <!nodoc>,
- python3-sphinx,
- python3-sphinxcontrib.programoutput,
-Standards-Version: 4.5.1
+ dh-sequence-sphinxdoc <!nodoc>,
+ pandoc <!nodoc>,
+ python3-nbsphinx <!nodoc>,
+ python3-sphinx,
+ python3-sphinxcontrib.programoutput,
+Standards-Version: 4.6.0
Vcs-Browser: https://salsa.debian.org/science-team/silx
Vcs-Git: https://salsa.debian.org/science-team/silx.git
Homepage: https://github.com/silx-kit/silx
@@ -43,10 +46,11 @@ Rules-Requires-Root: no
Package: silx
Architecture: all
-Depends: python3-silx (>= ${source:Version}),
- ${misc:Depends},
- ${python3:Depends},
- ${shlibs:Depends}
+Depends:
+ python3-silx (>= ${source:Version}),
+ ${misc:Depends},
+ ${python3:Depends},
+ ${shlibs:Depends},
Description: Toolbox for X-Ray data analysis - Executables
The silx project aims at providing a collection of Python packages to
support the development of data assessment, reduction and analysis
@@ -72,7 +76,10 @@ Description: Toolbox for X-Ray data analysis - Executables
Package: python3-silx
Architecture: any
Section: python
-Depends: ${misc:Depends}, ${python3:Depends}, ${shlibs:Depends}
+Depends:
+ ${misc:Depends},
+ ${python3:Depends},
+ ${shlibs:Depends},
Description: Toolbox for X-Ray data analysis - Python3
The silx project aims at providing a collection of Python packages to
support the development of data assessment, reduction and analysis
@@ -98,7 +105,10 @@ Description: Toolbox for X-Ray data analysis - Python3
Package: python-silx-doc
Architecture: all
Section: doc
-Depends: libjs-mathjax, ${misc:Depends}, ${sphinxdoc:Depends}
+Depends:
+ libjs-mathjax,
+ ${misc:Depends},
+ ${sphinxdoc:Depends},
Multi-Arch: foreign
Description: Toolbox for X-Ray data analysis - Documentation
The silx project aims at providing a collection of Python packages to
diff --git a/debian/copyright b/debian/copyright
index f0510f5..548070c 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -1,12 +1,12 @@
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: silx
Source: https://github.com/silx-kit/silx
-Files-Excluded: silx/opencl/sift
- silx/resources/opencl/sift
- silx/third_party/_local
+Files-Excluded: src/silx/opencl/sift
+ src/silx/resources/opencl/sift
+ src/silx/third_party/_local
Files: *
-Copyright: 2004-2017 European Synchrotron Radiation Facility
+Copyright: 2004-2017, 2022 European Synchrotron Radiation Facility
Data analysis unit (silx@esrf.fr)
License: Expat
diff --git a/debian/patches/0003-do-not-modify-PYTHONPATH-from-setup.py.patch b/debian/patches/0003-do-not-modify-PYTHONPATH-from-setup.py.patch
index 2a43553..bdefa54 100644
--- a/debian/patches/0003-do-not-modify-PYTHONPATH-from-setup.py.patch
+++ b/debian/patches/0003-do-not-modify-PYTHONPATH-from-setup.py.patch
@@ -7,10 +7,10 @@ Subject: do not modify PYTHONPATH from setup.py
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/setup.py b/setup.py
-index 771374c..bc43c32 100644
+index 045b9a0..c095b89 100644
--- a/setup.py
+++ b/setup.py
-@@ -313,7 +313,8 @@ class BuildMan(Command):
+@@ -296,7 +296,8 @@ class BuildMan(Command):
path.insert(0, os.path.abspath(build.build_lib))
env = dict((str(k), str(v)) for k, v in os.environ.items())
diff --git a/debian/patches/0004-skip-two-tests.patch b/debian/patches/0004-skip-two-tests.patch
index 077e5ee..a62e77f 100644
--- a/debian/patches/0004-skip-two-tests.patch
+++ b/debian/patches/0004-skip-two-tests.patch
@@ -4,22 +4,22 @@ Subject: skip two tests
"https://github.com/silx-kit/silx/issues/3523"
---
- silx/io/test/test_h5py_utils.py | 2 ++
+ src/silx/io/test/test_h5py_utils.py | 2 ++
1 file changed, 2 insertions(+)
-diff --git a/silx/io/test/test_h5py_utils.py b/silx/io/test/test_h5py_utils.py
-index 2e2e3dd..4a8e184 100644
---- a/silx/io/test/test_h5py_utils.py
-+++ b/silx/io/test/test_h5py_utils.py
-@@ -204,6 +204,7 @@ class TestH5pyUtils(unittest.TestCase):
- self.assertEqual(orig, os.environ.get("HDF5_USE_FILE_LOCKING"))
-
+diff --git a/src/silx/io/test/test_h5py_utils.py b/src/silx/io/test/test_h5py_utils.py
+index ea46eca..847a7b9 100644
+--- a/src/silx/io/test/test_h5py_utils.py
++++ b/src/silx/io/test/test_h5py_utils.py
+@@ -249,6 +249,7 @@ class TestH5pyUtils(unittest.TestCase):
+ "Versions of libhdf5 and h5py use incompatible file locking behaviour",
+ )
@subtests
+ @unittest.skipIf(True, "https://github.com/silx-kit/silx/issues/3523")
def test_modes_multi_process(self):
- if not self._liber_allows_concurrent_access:
- # A concurrent reader with HDF5_USE_FILE_LOCKING=FALSE is
-@@ -263,6 +264,7 @@ class TestH5pyUtils(unittest.TestCase):
+ """Test concurrent access to the same file from different processes"""
+ filename = self._new_filename()
+@@ -323,6 +324,7 @@ class TestH5pyUtils(unittest.TestCase):
@subtests
@unittest.skipIf(not h5py_utils.HAS_SWMR, "SWMR not supported")
diff --git a/debian/patches/0006-Tests-if-openCL-can-be-used.patch b/debian/patches/0006-Tests-if-openCL-can-be-used.patch
index 23bbcc6..c332d19 100644
--- a/debian/patches/0006-Tests-if-openCL-can-be-used.patch
+++ b/debian/patches/0006-Tests-if-openCL-can-be-used.patch
@@ -3,13 +3,13 @@ Date: Fri, 5 Jul 2019 16:52:20 +0200
Subject: Tests if openCL can be used
---
- silx/opencl/common.py | 2 ++
+ src/silx/opencl/common.py | 2 ++
1 file changed, 2 insertions(+)
-diff --git a/silx/opencl/common.py b/silx/opencl/common.py
-index b66b7b7..da966f6 100644
---- a/silx/opencl/common.py
-+++ b/silx/opencl/common.py
+diff --git a/src/silx/opencl/common.py b/src/silx/opencl/common.py
+index 60849d6..888b1da 100644
+--- a/src/silx/opencl/common.py
++++ b/src/silx/opencl/common.py
@@ -74,6 +74,8 @@ if pyopencl is None:
WRITE_ONLY = 1
READ_ONLY = 1
diff --git a/debian/tests/control b/debian/tests/control
index b6fa2c3..1be9023 100644
--- a/debian/tests/control
+++ b/debian/tests/control
@@ -4,4 +4,8 @@ Test-Command: set -efu
; echo "Testing with $py:"
; xvfb-run -a --server-args="-screen 0 1024x768x24" $py -c "import silx.test; silx.test.run_tests()" 2>&1
; done
-Depends: python3-all, python3-silx, xauth, xvfb
+Depends:
+ python3-all,
+ python3-silx,
+ xauth,
+ xvfb,
diff --git a/debian/upstream/signing-key.asc b/debian/upstream/signing-key.asc
index 101f781..6fb0a40 100644
--- a/debian/upstream/signing-key.asc
+++ b/debian/upstream/signing-key.asc
@@ -1,201 +1,52 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
-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
-YG7V46Fb3g29l4SV019ge/7aVyJPYyllvWg=
-=D1XZ
+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
+nb7YbK8=
+=gXaR
-----END PGP PUBLIC KEY BLOCK-----
diff --git a/doc/source/Tutorials/array_widget.rst b/doc/source/Tutorials/array_widget.rst
index c6a32e3..b0bc890 100644
--- a/doc/source/Tutorials/array_widget.rst
+++ b/doc/source/Tutorials/array_widget.rst
@@ -23,7 +23,7 @@ Let's look at a simple usage example:
w = ArrayTableWidget()
w.setArrayData(array, labels=True)
w.show()
- app.exec_()
+ app.exec()
.. |imgArray0| image:: img/arraywidget3D_0.png
@@ -242,6 +242,6 @@ of RGB colors.
fgcolors=fcolors)
atw.show()
- app.exec_()
+ app.exec()
diff --git a/doc/source/Tutorials/fit.rst b/doc/source/Tutorials/fit.rst
index d9671f4..c0eafc5 100644
--- a/doc/source/Tutorials/fit.rst
+++ b/doc/source/Tutorials/fit.rst
@@ -450,7 +450,7 @@ The following example illustrates the strip background removal process:
app = qt.QApplication([])
plot(x, y, x, actual_bg, x, strip_bg)
plot(x, y, x, (y - strip_bg))
- app.exec_()
+ app.exec()
.. |imgStrip1| image:: img/stripbg_plot1.png
:height: 300px
@@ -545,7 +545,7 @@ Simple usage
w.setData(x=x, y=y)
w.show()
- a.exec_()
+ a.exec()
.. |imgFitWidget1| image:: img/fitwidget1.png
:width: 300px
@@ -638,7 +638,7 @@ The :class:`FitWidget` can be initialised with a non-standard
fw = FitWidget(fitmngr=myfitmngr)
fw.show()
- a.exec_()
+ a.exec()
In our previous example, we didn't load a customised :class:`FitManager`,
therefore, the fit widget automatically initialised the default fit manager and
diff --git a/doc/source/Tutorials/fitconfig.rst b/doc/source/Tutorials/fitconfig.rst
index 225ef8f..0d7538c 100644
--- a/doc/source/Tutorials/fitconfig.rst
+++ b/doc/source/Tutorials/fitconfig.rst
@@ -52,7 +52,7 @@ dialog by FitWidget:
- :meth:`show`: should cause the widget to become visible to the
user)
- - :meth:`exec_`: should run while the user is interacting with the
+ - :meth:`exec`: should run while the user is interacting with the
widget, interrupting the rest of the program. It should
typically end (*return*) when the user clicks an *OK*
or a *Cancel* button.
@@ -175,7 +175,7 @@ used by our fit function to scale the *y* values.
fw.associateConfigDialog("scaled linear", CustomConfigWidget())
fw.show()
- app.exec_()
+ app.exec()
.. |img0| image:: img/custom_config_scale1.0.png
:height: 300px
diff --git a/doc/source/Tutorials/writing_NXdata.rst b/doc/source/Tutorials/writing_NXdata.rst
index 1c65199..4d87e3d 100644
--- a/doc/source/Tutorials/writing_NXdata.rst
+++ b/doc/source/Tutorials/writing_NXdata.rst
@@ -154,8 +154,7 @@ a *frame number*.
.. note::
- This additional attribute is not mentionned in the official NXdata
- specification.
+ This attribute is documented in the official NeXus `description <https://manual.nexusformat.org/nxdl_desc.html>`_
Writing NXdata with h5py
diff --git a/doc/source/applications/view.rst b/doc/source/applications/view.rst
index d4145c2..747a121 100644
--- a/doc/source/applications/view.rst
+++ b/doc/source/applications/view.rst
@@ -1,7 +1,11 @@
+.. _silx view:
silx view
=========
+.. figure:: http://www.silx.org/doc/silx/img/silx-view-v1-0.gif
+ :align: center
+
Purpose
-------
diff --git a/doc/source/ext/snapshotqt_directive.py b/doc/source/ext/snapshotqt_directive.py
index 582b934..84b3ac6 100644
--- a/doc/source/ext/snapshotqt_directive.py
+++ b/doc/source/ext/snapshotqt_directive.py
@@ -152,7 +152,7 @@ else:
_towrite = _line.lstrip(' ')
if not _towrite.startswith(':'):
_file.write(_towrite + '\n')
- _file.write("app.exec_()")
+ _file.write("app.exec()")
self.content = []
if script is not None:
_logger.warning('Cannot specify a script if source code (content) is given.'
diff --git a/doc/source/index.rst b/doc/source/index.rst
index 1c4ad72..027bd6f 100644
--- a/doc/source/index.rst
+++ b/doc/source/index.rst
@@ -1,6 +1,9 @@
silx |version|
==============
+.. |silxView| image:: http://www.silx.org/doc/silx/img/silx-view-v1-0.gif
+ :height: 80px
+
The silx project aims to provide a collection of Python packages to support the
development of data assessment, reduction and analysis at synchrotron radiation
facilities.
@@ -28,9 +31,13 @@ The current version (v\ |version|) caters for:
* a set of applications:
- * a unified viewer (*silx view filename*) for HDF5, SPEC and image file formats
- * a unified converter to HDF5 format (*silx convert filename*)
+ * a unified viewer (:ref:`silx view` *filename*) for HDF5, SPEC and image file formats
+
+ |silxView|
+
+ * a unified converter to HDF5 format (*silx convert filename*)
+
.. toctree::
:hidden:
diff --git a/doc/source/install.rst b/doc/source/install.rst
index b0d6b4f..0841c2a 100644
--- a/doc/source/install.rst
+++ b/doc/source/install.rst
@@ -7,15 +7,15 @@ programming language.
This table summarizes the support matrix of silx:
-+------------+--------------+---------------------+
-| System | Python vers. | Qt and its bindings |
-+------------+--------------+---------------------+
-| `Windows`_ | 3.6-3.9 | PyQt5.6+, PySide2 |
-+------------+--------------+---------------------+
-| `MacOS`_ | 3.6-3.9 | PyQt5.6+, PySide2 |
-+------------+--------------+---------------------+
-| `Linux`_ | 3.6-3.9 | PyQt5.3+, PySide2 |
-+------------+--------------+---------------------+
++------------+--------------+----------------------------+
+| System | Python vers. | Qt and its bindings |
++------------+--------------+----------------------------+
+| `Windows`_ | 3.6-3.9 | PyQt5.6+, PySide2, PySide6 |
++------------+--------------+----------------------------+
+| `MacOS`_ | 3.6-3.9 | PyQt5.6+, PySide2, PySide6 |
++------------+--------------+----------------------------+
+| `Linux`_ | 3.6-3.9 | PyQt5.3+, PySide2, PySide6 |
++------------+--------------+----------------------------+
For the description of *silx* dependencies, see the Dependencies_ section.
@@ -66,7 +66,8 @@ The mandatory dependencies are:
The GUI widgets depend on the following extra packages:
* A Qt binding: either `PyQt5 <https://riverbankcomputing.com/software/pyqt/intro>`_,
- or `PySide2 <https://wiki.qt.io/Qt_for_Python>`_
+ `PySide2 <https://pypi.org/project/PySide2/>`_, or
+ `PySide6 <https://pypi.org/project/PySide6/>`_
* `matplotlib <http://matplotlib.org/>`_
* `PyOpenGL <http://pyopengl.sourceforge.net/>`_
* `qt_console <https://pypi.org/project/qtconsole>`_
@@ -245,7 +246,7 @@ installed using:
.. code-block:: bash
- pip install -r https://github.com/silx-kit/silx/raw/0.8/requirements-dev.txt
+ pip install -r https://github.com/silx-kit/silx/raw/master/requirements-dev.txt
Building from source
diff --git a/doc/source/modules/gui/icons.rst b/doc/source/modules/gui/icons.rst
index 67235c2..cb8e044 100644
--- a/doc/source/modules/gui/icons.rst
+++ b/doc/source/modules/gui/icons.rst
@@ -55,6 +55,8 @@ Available icons
- add-shape-vertical
* - |add|
- add
+ * - |aggregation-mode|
+ - aggregation-mode
* - |arrow-keys|
- arrow-keys
* - |axis|
@@ -339,6 +341,8 @@ Available icons
- shape-square
* - |shape-vertical|
- shape-vertical
+ * - |side-histograms|
+ - side-histograms
* - |silx|
- silx
* - |slice-cross|
@@ -402,194 +406,196 @@ Available icons
* - |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-pan| image:: ../../../../silx/resources/gui/icons/3d-plane-pan.png
-.. |3d-plane| image:: ../../../../silx/resources/gui/icons/3d-plane.png
-.. |add-range-horizontal| image:: ../../../../silx/resources/gui/icons/add-range-horizontal.png
-.. |add-shape-arc| image:: ../../../../silx/resources/gui/icons/add-shape-arc.png
-.. |add-shape-circle| image:: ../../../../silx/resources/gui/icons/add-shape-circle.png
-.. |add-shape-cross| image:: ../../../../silx/resources/gui/icons/add-shape-cross.png
-.. |add-shape-diagonal| image:: ../../../../silx/resources/gui/icons/add-shape-diagonal.png
-.. |add-shape-ellipse| image:: ../../../../silx/resources/gui/icons/add-shape-ellipse.png
-.. |add-shape-horizontal| image:: ../../../../silx/resources/gui/icons/add-shape-horizontal.png
-.. |add-shape-point| image:: ../../../../silx/resources/gui/icons/add-shape-point.png
-.. |add-shape-polygon| image:: ../../../../silx/resources/gui/icons/add-shape-polygon.png
-.. |add-shape-rectangle| image:: ../../../../silx/resources/gui/icons/add-shape-rectangle.png
-.. |add-shape-unknown| image:: ../../../../silx/resources/gui/icons/add-shape-unknown.png
-.. |add-shape-vertical| image:: ../../../../silx/resources/gui/icons/add-shape-vertical.png
-.. |add| image:: ../../../../silx/resources/gui/icons/add.png
-.. |arrow-keys| image:: ../../../../silx/resources/gui/icons/arrow-keys.png
-.. |axis| image:: ../../../../silx/resources/gui/icons/axis.png
-.. |backend-opengl| image:: ../../../../silx/resources/gui/icons/backend-opengl.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
-.. |colorbar| image:: ../../../../silx/resources/gui/icons/colorbar.png
-.. |colormap-histogram| image:: ../../../../silx/resources/gui/icons/colormap-histogram.png
-.. |colormap-none| image:: ../../../../silx/resources/gui/icons/colormap-none.png
-.. |colormap-norm-arcsinh| image:: ../../../../silx/resources/gui/icons/colormap-norm-arcsinh.png
-.. |colormap-norm-gamma| image:: ../../../../silx/resources/gui/icons/colormap-norm-gamma.png
-.. |colormap-norm-linear| image:: ../../../../silx/resources/gui/icons/colormap-norm-linear.png
-.. |colormap-norm-log| image:: ../../../../silx/resources/gui/icons/colormap-norm-log.png
-.. |colormap-norm-sqrt| image:: ../../../../silx/resources/gui/icons/colormap-norm-sqrt.png
-.. |colormap-range| image:: ../../../../silx/resources/gui/icons/colormap-range.png
-.. |colormap| image:: ../../../../silx/resources/gui/icons/colormap.png
-.. |compare-align-auto| image:: ../../../../silx/resources/gui/icons/compare-align-auto.png
-.. |compare-align-center| image:: ../../../../silx/resources/gui/icons/compare-align-center.png
-.. |compare-align-origin| image:: ../../../../silx/resources/gui/icons/compare-align-origin.png
-.. |compare-align-stretch| image:: ../../../../silx/resources/gui/icons/compare-align-stretch.png
-.. |compare-keypoints| image:: ../../../../silx/resources/gui/icons/compare-keypoints.png
-.. |compare-mode-a-minus-b| image:: ../../../../silx/resources/gui/icons/compare-mode-a-minus-b.png
-.. |compare-mode-a| image:: ../../../../silx/resources/gui/icons/compare-mode-a.png
-.. |compare-mode-b| image:: ../../../../silx/resources/gui/icons/compare-mode-b.png
-.. |compare-mode-hline| image:: ../../../../silx/resources/gui/icons/compare-mode-hline.png
-.. |compare-mode-rb-channel| image:: ../../../../silx/resources/gui/icons/compare-mode-rb-channel.png
-.. |compare-mode-rbneg-channel| image:: ../../../../silx/resources/gui/icons/compare-mode-rbneg-channel.png
-.. |compare-mode-vline| image:: ../../../../silx/resources/gui/icons/compare-mode-vline.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-rotate| image:: ../../../../silx/resources/gui/icons/cube-rotate.png
-.. |cube-top| image:: ../../../../silx/resources/gui/icons/cube-top.png
-.. |cube| image:: ../../../../silx/resources/gui/icons/cube.png
-.. |description-description| image:: ../../../../silx/resources/gui/icons/description-description.png
-.. |description-error| image:: ../../../../silx/resources/gui/icons/description-error.png
-.. |description-name| image:: ../../../../silx/resources/gui/icons/description-name.png
-.. |description-program| image:: ../../../../silx/resources/gui/icons/description-program.png
-.. |description-title| image:: ../../../../silx/resources/gui/icons/description-title.png
-.. |description-value| image:: ../../../../silx/resources/gui/icons/description-value.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
-.. |eye| image:: ../../../../silx/resources/gui/icons/eye.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-none| image:: ../../../../silx/resources/gui/icons/item-none.png
-.. |item-object| image:: ../../../../silx/resources/gui/icons/item-object.png
-.. |last| image:: ../../../../silx/resources/gui/icons/last.png
-.. |layer-nx| image:: ../../../../silx/resources/gui/icons/layer-nx.png
-.. |mask-clear-all| image:: ../../../../silx/resources/gui/icons/mask-clear-all.png
-.. |mask-clear| image:: ../../../../silx/resources/gui/icons/mask-clear.png
-.. |mask-invert| image:: ../../../../silx/resources/gui/icons/mask-invert.png
-.. |math-amplitude| image:: ../../../../silx/resources/gui/icons/math-amplitude.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-imaginary| image:: ../../../../silx/resources/gui/icons/math-imaginary.png
-.. |math-mean| image:: ../../../../silx/resources/gui/icons/math-mean.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-phase-color-log| image:: ../../../../silx/resources/gui/icons/math-phase-color-log.png
-.. |math-phase-color| image:: ../../../../silx/resources/gui/icons/math-phase-color.png
-.. |math-phase| image:: ../../../../silx/resources/gui/icons/math-phase.png
-.. |math-real| image:: ../../../../silx/resources/gui/icons/math-real.png
-.. |math-sigma| image:: ../../../../silx/resources/gui/icons/math-sigma.png
-.. |math-smooth| image:: ../../../../silx/resources/gui/icons/math-smooth.png
-.. |math-square-amplitude| image:: ../../../../silx/resources/gui/icons/math-square-amplitude.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
-.. |median-filter| image:: ../../../../silx/resources/gui/icons/median-filter.png
-.. |next| image:: ../../../../silx/resources/gui/icons/next.png
-.. |normal| image:: ../../../../silx/resources/gui/icons/normal.png
-.. |nxdata-axis-add| image:: ../../../../silx/resources/gui/icons/nxdata-axis-add.png
-.. |nxdata-axis-remove| image:: ../../../../silx/resources/gui/icons/nxdata-axis-remove.png
-.. |nxdata-create| image:: ../../../../silx/resources/gui/icons/nxdata-create.png
-.. |nxdata-remove| image:: ../../../../silx/resources/gui/icons/nxdata-remove.png
-.. |pan| image:: ../../../../silx/resources/gui/icons/pan.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-symbols| image:: ../../../../silx/resources/gui/icons/plot-symbols.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
-.. |pointing-hand| image:: ../../../../silx/resources/gui/icons/pointing-hand.png
-.. |previous| image:: ../../../../silx/resources/gui/icons/previous.png
-.. |profile-clear| image:: ../../../../silx/resources/gui/icons/profile-clear.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
-.. |rm| image:: ../../../../silx/resources/gui/icons/rm.png
-.. |rotate-3d| image:: ../../../../silx/resources/gui/icons/rotate-3d.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-cross| image:: ../../../../silx/resources/gui/icons/shape-cross.png
-.. |shape-diagonal-directed| image:: ../../../../silx/resources/gui/icons/shape-diagonal-directed.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
-.. |slice-cross| image:: ../../../../silx/resources/gui/icons/slice-cross.png
-.. |slice-horizontal| image:: ../../../../silx/resources/gui/icons/slice-horizontal.png
-.. |slice-vertical| image:: ../../../../silx/resources/gui/icons/slice-vertical.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
-.. |stats-active-items| image:: ../../../../silx/resources/gui/icons/stats-active-items.png
-.. |stats-visible-data| image:: ../../../../silx/resources/gui/icons/stats-visible-data.png
-.. |stats-whole-data| image:: ../../../../silx/resources/gui/icons/stats-whole-data.png
-.. |stats-whole-items| image:: ../../../../silx/resources/gui/icons/stats-whole-items.png
-.. |tree-collapse-all| image:: ../../../../silx/resources/gui/icons/tree-collapse-all.png
-.. |tree-expand-all| image:: ../../../../silx/resources/gui/icons/tree-expand-all.png
-.. |tree-sort| image:: ../../../../silx/resources/gui/icons/tree-sort.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-hdf5| image:: ../../../../silx/resources/gui/icons/view-hdf5.png
-.. |view-nexus| image:: ../../../../silx/resources/gui/icons/view-nexus.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-back| image:: ../../../../silx/resources/gui/icons/zoom-back.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
+.. |3d-plane-normal-x| image:: ../../../../src/silx/resources/gui/icons/3d-plane-normal-x.png
+.. |3d-plane-normal-y| image:: ../../../../src/silx/resources/gui/icons/3d-plane-normal-y.png
+.. |3d-plane-normal-z| image:: ../../../../src/silx/resources/gui/icons/3d-plane-normal-z.png
+.. |3d-plane-pan| image:: ../../../../src/silx/resources/gui/icons/3d-plane-pan.png
+.. |3d-plane| image:: ../../../../src/silx/resources/gui/icons/3d-plane.png
+.. |add-range-horizontal| image:: ../../../../src/silx/resources/gui/icons/add-range-horizontal.png
+.. |add-shape-arc| image:: ../../../../src/silx/resources/gui/icons/add-shape-arc.png
+.. |add-shape-circle| image:: ../../../../src/silx/resources/gui/icons/add-shape-circle.png
+.. |add-shape-cross| image:: ../../../../src/silx/resources/gui/icons/add-shape-cross.png
+.. |add-shape-diagonal| image:: ../../../../src/silx/resources/gui/icons/add-shape-diagonal.png
+.. |add-shape-ellipse| image:: ../../../../src/silx/resources/gui/icons/add-shape-ellipse.png
+.. |add-shape-horizontal| image:: ../../../../src/silx/resources/gui/icons/add-shape-horizontal.png
+.. |add-shape-point| image:: ../../../../src/silx/resources/gui/icons/add-shape-point.png
+.. |add-shape-polygon| image:: ../../../../src/silx/resources/gui/icons/add-shape-polygon.png
+.. |add-shape-rectangle| image:: ../../../../src/silx/resources/gui/icons/add-shape-rectangle.png
+.. |add-shape-unknown| image:: ../../../../src/silx/resources/gui/icons/add-shape-unknown.png
+.. |add-shape-vertical| image:: ../../../../src/silx/resources/gui/icons/add-shape-vertical.png
+.. |add| image:: ../../../../src/silx/resources/gui/icons/add.png
+.. |aggregation-mode| image:: ../../../../src/silx/resources/gui/icons/aggregation-mode.png
+.. |arrow-keys| image:: ../../../../src/silx/resources/gui/icons/arrow-keys.png
+.. |axis| image:: ../../../../src/silx/resources/gui/icons/axis.png
+.. |backend-opengl| image:: ../../../../src/silx/resources/gui/icons/backend-opengl.png
+.. |camera| image:: ../../../../src/silx/resources/gui/icons/camera.png
+.. |clipboard| image:: ../../../../src/silx/resources/gui/icons/clipboard.png
+.. |close| image:: ../../../../src/silx/resources/gui/icons/close.png
+.. |colorbar| image:: ../../../../src/silx/resources/gui/icons/colorbar.png
+.. |colormap-histogram| image:: ../../../../src/silx/resources/gui/icons/colormap-histogram.png
+.. |colormap-none| image:: ../../../../src/silx/resources/gui/icons/colormap-none.png
+.. |colormap-norm-arcsinh| image:: ../../../../src/silx/resources/gui/icons/colormap-norm-arcsinh.png
+.. |colormap-norm-gamma| image:: ../../../../src/silx/resources/gui/icons/colormap-norm-gamma.png
+.. |colormap-norm-linear| image:: ../../../../src/silx/resources/gui/icons/colormap-norm-linear.png
+.. |colormap-norm-log| image:: ../../../../src/silx/resources/gui/icons/colormap-norm-log.png
+.. |colormap-norm-sqrt| image:: ../../../../src/silx/resources/gui/icons/colormap-norm-sqrt.png
+.. |colormap-range| image:: ../../../../src/silx/resources/gui/icons/colormap-range.png
+.. |colormap| image:: ../../../../src/silx/resources/gui/icons/colormap.png
+.. |compare-align-auto| image:: ../../../../src/silx/resources/gui/icons/compare-align-auto.png
+.. |compare-align-center| image:: ../../../../src/silx/resources/gui/icons/compare-align-center.png
+.. |compare-align-origin| image:: ../../../../src/silx/resources/gui/icons/compare-align-origin.png
+.. |compare-align-stretch| image:: ../../../../src/silx/resources/gui/icons/compare-align-stretch.png
+.. |compare-keypoints| image:: ../../../../src/silx/resources/gui/icons/compare-keypoints.png
+.. |compare-mode-a-minus-b| image:: ../../../../src/silx/resources/gui/icons/compare-mode-a-minus-b.png
+.. |compare-mode-a| image:: ../../../../src/silx/resources/gui/icons/compare-mode-a.png
+.. |compare-mode-b| image:: ../../../../src/silx/resources/gui/icons/compare-mode-b.png
+.. |compare-mode-hline| image:: ../../../../src/silx/resources/gui/icons/compare-mode-hline.png
+.. |compare-mode-rb-channel| image:: ../../../../src/silx/resources/gui/icons/compare-mode-rb-channel.png
+.. |compare-mode-rbneg-channel| image:: ../../../../src/silx/resources/gui/icons/compare-mode-rbneg-channel.png
+.. |compare-mode-vline| image:: ../../../../src/silx/resources/gui/icons/compare-mode-vline.png
+.. |crop| image:: ../../../../src/silx/resources/gui/icons/crop.png
+.. |crosshair| image:: ../../../../src/silx/resources/gui/icons/crosshair.png
+.. |cube-back| image:: ../../../../src/silx/resources/gui/icons/cube-back.png
+.. |cube-bottom| image:: ../../../../src/silx/resources/gui/icons/cube-bottom.png
+.. |cube-front| image:: ../../../../src/silx/resources/gui/icons/cube-front.png
+.. |cube-left| image:: ../../../../src/silx/resources/gui/icons/cube-left.png
+.. |cube-right| image:: ../../../../src/silx/resources/gui/icons/cube-right.png
+.. |cube-rotate| image:: ../../../../src/silx/resources/gui/icons/cube-rotate.png
+.. |cube-top| image:: ../../../../src/silx/resources/gui/icons/cube-top.png
+.. |cube| image:: ../../../../src/silx/resources/gui/icons/cube.png
+.. |description-description| image:: ../../../../src/silx/resources/gui/icons/description-description.png
+.. |description-error| image:: ../../../../src/silx/resources/gui/icons/description-error.png
+.. |description-name| image:: ../../../../src/silx/resources/gui/icons/description-name.png
+.. |description-program| image:: ../../../../src/silx/resources/gui/icons/description-program.png
+.. |description-title| image:: ../../../../src/silx/resources/gui/icons/description-title.png
+.. |description-value| image:: ../../../../src/silx/resources/gui/icons/description-value.png
+.. |document-open| image:: ../../../../src/silx/resources/gui/icons/document-open.png
+.. |document-print| image:: ../../../../src/silx/resources/gui/icons/document-print.png
+.. |document-save| image:: ../../../../src/silx/resources/gui/icons/document-save.png
+.. |draw-brush| image:: ../../../../src/silx/resources/gui/icons/draw-brush.png
+.. |draw-pencil| image:: ../../../../src/silx/resources/gui/icons/draw-pencil.png
+.. |draw-rubber| image:: ../../../../src/silx/resources/gui/icons/draw-rubber.png
+.. |edit-copy| image:: ../../../../src/silx/resources/gui/icons/edit-copy.png
+.. |eye| image:: ../../../../src/silx/resources/gui/icons/eye.png
+.. |first| image:: ../../../../src/silx/resources/gui/icons/first.png
+.. |folder| image:: ../../../../src/silx/resources/gui/icons/folder.png
+.. |image-mask| image:: ../../../../src/silx/resources/gui/icons/image-mask.png
+.. |image-select-add| image:: ../../../../src/silx/resources/gui/icons/image-select-add.png
+.. |image-select-box| image:: ../../../../src/silx/resources/gui/icons/image-select-box.png
+.. |image-select-brush| image:: ../../../../src/silx/resources/gui/icons/image-select-brush.png
+.. |image-select-erase-rubber| image:: ../../../../src/silx/resources/gui/icons/image-select-erase-rubber.png
+.. |image-select-erase| image:: ../../../../src/silx/resources/gui/icons/image-select-erase.png
+.. |image| image:: ../../../../src/silx/resources/gui/icons/image.png
+.. |item-0dim| image:: ../../../../src/silx/resources/gui/icons/item-0dim.png
+.. |item-1dim| image:: ../../../../src/silx/resources/gui/icons/item-1dim.png
+.. |item-2dim| image:: ../../../../src/silx/resources/gui/icons/item-2dim.png
+.. |item-3dim| image:: ../../../../src/silx/resources/gui/icons/item-3dim.png
+.. |item-ndim| image:: ../../../../src/silx/resources/gui/icons/item-ndim.png
+.. |item-none| image:: ../../../../src/silx/resources/gui/icons/item-none.png
+.. |item-object| image:: ../../../../src/silx/resources/gui/icons/item-object.png
+.. |last| image:: ../../../../src/silx/resources/gui/icons/last.png
+.. |layer-nx| image:: ../../../../src/silx/resources/gui/icons/layer-nx.png
+.. |mask-clear-all| image:: ../../../../src/silx/resources/gui/icons/mask-clear-all.png
+.. |mask-clear| image:: ../../../../src/silx/resources/gui/icons/mask-clear.png
+.. |mask-invert| image:: ../../../../src/silx/resources/gui/icons/mask-invert.png
+.. |math-amplitude| image:: ../../../../src/silx/resources/gui/icons/math-amplitude.png
+.. |math-average| image:: ../../../../src/silx/resources/gui/icons/math-average.png
+.. |math-derive| image:: ../../../../src/silx/resources/gui/icons/math-derive.png
+.. |math-energy| image:: ../../../../src/silx/resources/gui/icons/math-energy.png
+.. |math-fit| image:: ../../../../src/silx/resources/gui/icons/math-fit.png
+.. |math-imaginary| image:: ../../../../src/silx/resources/gui/icons/math-imaginary.png
+.. |math-mean| image:: ../../../../src/silx/resources/gui/icons/math-mean.png
+.. |math-normalize| image:: ../../../../src/silx/resources/gui/icons/math-normalize.png
+.. |math-peak-reset| image:: ../../../../src/silx/resources/gui/icons/math-peak-reset.png
+.. |math-peak-search| image:: ../../../../src/silx/resources/gui/icons/math-peak-search.png
+.. |math-peak| image:: ../../../../src/silx/resources/gui/icons/math-peak.png
+.. |math-phase-color-log| image:: ../../../../src/silx/resources/gui/icons/math-phase-color-log.png
+.. |math-phase-color| image:: ../../../../src/silx/resources/gui/icons/math-phase-color.png
+.. |math-phase| image:: ../../../../src/silx/resources/gui/icons/math-phase.png
+.. |math-real| image:: ../../../../src/silx/resources/gui/icons/math-real.png
+.. |math-sigma| image:: ../../../../src/silx/resources/gui/icons/math-sigma.png
+.. |math-smooth| image:: ../../../../src/silx/resources/gui/icons/math-smooth.png
+.. |math-square-amplitude| image:: ../../../../src/silx/resources/gui/icons/math-square-amplitude.png
+.. |math-substract| image:: ../../../../src/silx/resources/gui/icons/math-substract.png
+.. |math-swap-sign| image:: ../../../../src/silx/resources/gui/icons/math-swap-sign.png
+.. |math-ymin-to-zero| image:: ../../../../src/silx/resources/gui/icons/math-ymin-to-zero.png
+.. |median-filter| image:: ../../../../src/silx/resources/gui/icons/median-filter.png
+.. |next| image:: ../../../../src/silx/resources/gui/icons/next.png
+.. |normal| image:: ../../../../src/silx/resources/gui/icons/normal.png
+.. |nxdata-axis-add| image:: ../../../../src/silx/resources/gui/icons/nxdata-axis-add.png
+.. |nxdata-axis-remove| image:: ../../../../src/silx/resources/gui/icons/nxdata-axis-remove.png
+.. |nxdata-create| image:: ../../../../src/silx/resources/gui/icons/nxdata-create.png
+.. |nxdata-remove| image:: ../../../../src/silx/resources/gui/icons/nxdata-remove.png
+.. |pan| image:: ../../../../src/silx/resources/gui/icons/pan.png
+.. |pixel-intensities| image:: ../../../../src/silx/resources/gui/icons/pixel-intensities.png
+.. |plot-grid| image:: ../../../../src/silx/resources/gui/icons/plot-grid.png
+.. |plot-roi-above| image:: ../../../../src/silx/resources/gui/icons/plot-roi-above.png
+.. |plot-roi-below| image:: ../../../../src/silx/resources/gui/icons/plot-roi-below.png
+.. |plot-roi-between| image:: ../../../../src/silx/resources/gui/icons/plot-roi-between.png
+.. |plot-roi-reset| image:: ../../../../src/silx/resources/gui/icons/plot-roi-reset.png
+.. |plot-roi| image:: ../../../../src/silx/resources/gui/icons/plot-roi.png
+.. |plot-symbols| image:: ../../../../src/silx/resources/gui/icons/plot-symbols.png
+.. |plot-toggle-points| image:: ../../../../src/silx/resources/gui/icons/plot-toggle-points.png
+.. |plot-widget| image:: ../../../../src/silx/resources/gui/icons/plot-widget.png
+.. |plot-window-image| image:: ../../../../src/silx/resources/gui/icons/plot-window-image.png
+.. |plot-window| image:: ../../../../src/silx/resources/gui/icons/plot-window.png
+.. |plot-xauto| image:: ../../../../src/silx/resources/gui/icons/plot-xauto.png
+.. |plot-xlog| image:: ../../../../src/silx/resources/gui/icons/plot-xlog.png
+.. |plot-yauto| image:: ../../../../src/silx/resources/gui/icons/plot-yauto.png
+.. |plot-ydown| image:: ../../../../src/silx/resources/gui/icons/plot-ydown.png
+.. |plot-ylog| image:: ../../../../src/silx/resources/gui/icons/plot-ylog.png
+.. |plot-yup| image:: ../../../../src/silx/resources/gui/icons/plot-yup.png
+.. |pointing-hand| image:: ../../../../src/silx/resources/gui/icons/pointing-hand.png
+.. |previous| image:: ../../../../src/silx/resources/gui/icons/previous.png
+.. |profile-clear| image:: ../../../../src/silx/resources/gui/icons/profile-clear.png
+.. |profile1D| image:: ../../../../src/silx/resources/gui/icons/profile1D.png
+.. |profile2D| image:: ../../../../src/silx/resources/gui/icons/profile2D.png
+.. |remove| image:: ../../../../src/silx/resources/gui/icons/remove.png
+.. |rm| image:: ../../../../src/silx/resources/gui/icons/rm.png
+.. |rotate-3d| image:: ../../../../src/silx/resources/gui/icons/rotate-3d.png
+.. |rudder| image:: ../../../../src/silx/resources/gui/icons/rudder.png
+.. |selected| image:: ../../../../src/silx/resources/gui/icons/selected.png
+.. |shape-circle-solid| image:: ../../../../src/silx/resources/gui/icons/shape-circle-solid.png
+.. |shape-circle| image:: ../../../../src/silx/resources/gui/icons/shape-circle.png
+.. |shape-cross| image:: ../../../../src/silx/resources/gui/icons/shape-cross.png
+.. |shape-diagonal-directed| image:: ../../../../src/silx/resources/gui/icons/shape-diagonal-directed.png
+.. |shape-diagonal| image:: ../../../../src/silx/resources/gui/icons/shape-diagonal.png
+.. |shape-ellipse-solid| image:: ../../../../src/silx/resources/gui/icons/shape-ellipse-solid.png
+.. |shape-ellipse| image:: ../../../../src/silx/resources/gui/icons/shape-ellipse.png
+.. |shape-horizontal| image:: ../../../../src/silx/resources/gui/icons/shape-horizontal.png
+.. |shape-polygon| image:: ../../../../src/silx/resources/gui/icons/shape-polygon.png
+.. |shape-rectangle| image:: ../../../../src/silx/resources/gui/icons/shape-rectangle.png
+.. |shape-square| image:: ../../../../src/silx/resources/gui/icons/shape-square.png
+.. |shape-vertical| image:: ../../../../src/silx/resources/gui/icons/shape-vertical.png
+.. |side-histograms| image:: ../../../../src/silx/resources/gui/icons/side-histograms.png
+.. |silx| image:: ../../../../src/silx/resources/gui/icons/silx.png
+.. |slice-cross| image:: ../../../../src/silx/resources/gui/icons/slice-cross.png
+.. |slice-horizontal| image:: ../../../../src/silx/resources/gui/icons/slice-horizontal.png
+.. |slice-vertical| image:: ../../../../src/silx/resources/gui/icons/slice-vertical.png
+.. |sliders-off| image:: ../../../../src/silx/resources/gui/icons/sliders-off.png
+.. |sliders-on| image:: ../../../../src/silx/resources/gui/icons/sliders-on.png
+.. |spec| image:: ../../../../src/silx/resources/gui/icons/spec.png
+.. |stats-active-items| image:: ../../../../src/silx/resources/gui/icons/stats-active-items.png
+.. |stats-visible-data| image:: ../../../../src/silx/resources/gui/icons/stats-visible-data.png
+.. |stats-whole-data| image:: ../../../../src/silx/resources/gui/icons/stats-whole-data.png
+.. |stats-whole-items| image:: ../../../../src/silx/resources/gui/icons/stats-whole-items.png
+.. |tree-collapse-all| image:: ../../../../src/silx/resources/gui/icons/tree-collapse-all.png
+.. |tree-expand-all| image:: ../../../../src/silx/resources/gui/icons/tree-expand-all.png
+.. |tree-sort| image:: ../../../../src/silx/resources/gui/icons/tree-sort.png
+.. |view-1d| image:: ../../../../src/silx/resources/gui/icons/view-1d.png
+.. |view-2d-stack| image:: ../../../../src/silx/resources/gui/icons/view-2d-stack.png
+.. |view-2d| image:: ../../../../src/silx/resources/gui/icons/view-2d.png
+.. |view-3d| image:: ../../../../src/silx/resources/gui/icons/view-3d.png
+.. |view-fullscreen| image:: ../../../../src/silx/resources/gui/icons/view-fullscreen.png
+.. |view-hdf5| image:: ../../../../src/silx/resources/gui/icons/view-hdf5.png
+.. |view-nexus| image:: ../../../../src/silx/resources/gui/icons/view-nexus.png
+.. |view-nofullscreen| image:: ../../../../src/silx/resources/gui/icons/view-nofullscreen.png
+.. |view-raw| image:: ../../../../src/silx/resources/gui/icons/view-raw.png
+.. |view-refresh| image:: ../../../../src/silx/resources/gui/icons/view-refresh.png
+.. |view-text| image:: ../../../../src/silx/resources/gui/icons/view-text.png
+.. |window-new| image:: ../../../../src/silx/resources/gui/icons/window-new.png
+.. |zoom-back| image:: ../../../../src/silx/resources/gui/icons/zoom-back.png
+.. |zoom-in| image:: ../../../../src/silx/resources/gui/icons/zoom-in.png
+.. |zoom-original| image:: ../../../../src/silx/resources/gui/icons/zoom-original.png
+.. |zoom-out| image:: ../../../../src/silx/resources/gui/icons/zoom-out.png
+.. |zoom| image:: ../../../../src/silx/resources/gui/icons/zoom.png
diff --git a/doc/source/modules/gui/plot/getting_started.rst b/doc/source/modules/gui/plot/getting_started.rst
index c105395..1c29f23 100644
--- a/doc/source/modules/gui/plot/getting_started.rst
+++ b/doc/source/modules/gui/plot/getting_started.rst
@@ -20,7 +20,7 @@ For a complete description of the API, see :mod:`silx.gui.plot`.
Use :mod:`silx.gui.plot` from (I)Python console
-----------------------------------------------
-We recommend to use (I)Python >=3.5 and PyQt5.
+We recommend to use (I)Python >=3.6 and PyQt5.
From a Python or IPython interpreter, the simplest way is to import the :mod:`silx.sx` module:
@@ -87,9 +87,9 @@ A Qt GUI script must have a QApplication initialised before creating widgets:
if __name__ == '__main__':
[...]
- qapp.exec_()
+ qapp.exec()
-Unless a Qt binding has already been loaded, :mod:`silx.gui.qt` uses one of the supported Qt bindings (PyQt5, PyQt4, PySide2).
+Unless a Qt binding has already been loaded, :mod:`silx.gui.qt` uses one of the supported Qt bindings (PyQt5, PySide2, PySide6).
If you prefer to choose the Qt binding yourself, import it before importing
a module from :mod:`silx.gui`:
diff --git a/doc/source/modules/gui/widgets/printpreview.rst b/doc/source/modules/gui/widgets/printpreview.rst
index d0b7999..bff2381 100644
--- a/doc/source/modules/gui/widgets/printpreview.rst
+++ b/doc/source/modules/gui/widgets/printpreview.rst
@@ -56,5 +56,5 @@ Example
commentPosition="CENTER")
w.addImage(qt.QImage(filename), comment=comment, commentPosition="LEFT")
- w.exec_()
- a.exec_()
+ w.exec()
+ a.exec()
diff --git a/doc/source/modules/io/fioh5.rst b/doc/source/modules/io/fioh5.rst
new file mode 100644
index 0000000..c901878
--- /dev/null
+++ b/doc/source/modules/io/fioh5.rst
@@ -0,0 +1,35 @@
+
+.. currentmodule:: silx.io
+
+:mod:`fioh5`: h5py-like API to FIO file
+----------------------------------------
+
+.. automodule:: silx.io.fioh5
+
+
+Classes
++++++++
+
+- :class:`FioH5`
+- :class:`FioFile`
+
+.. autoclass:: FioH5
+ :members:
+ :show-inheritance:
+ :undoc-members:
+ :inherited-members: name, basename, attrs, h5py_class, parent,
+ get, keys, values, items,
+ :special-members: __getitem__, __len__, __contains__, __enter__, __exit__, __iter__
+ :exclude-members: add_node
+
+.. autoclass:: FioFile
+
+.. autoclass:: silx.io.commonh5.Group
+ :show-inheritance:
+ :undoc-members:
+ :members: name, basename, file, attrs, h5py_class, parent,
+ get, keys, values, items, visit, visititems
+ :special-members: __getitem__, __len__, __contains__, __iter__
+ :exclude-members: add_node
+
+.. autofunction:: is_fiofile \ No newline at end of file
diff --git a/doc/source/modules/io/index.rst b/doc/source/modules/io/index.rst
index 581f763..a511bef 100644
--- a/doc/source/modules/io/index.rst
+++ b/doc/source/modules/io/index.rst
@@ -16,6 +16,7 @@
specfile.rst
specfilewrapper.rst
spech5.rst
+ fioh5.rst
url.rst
utils.rst
h5py_utils.rst
diff --git a/doc/source/virtualenv.rst b/doc/source/virtualenv.rst
index ccdd9b6..280c031 100644
--- a/doc/source/virtualenv.rst
+++ b/doc/source/virtualenv.rst
@@ -132,7 +132,7 @@ To test *silx*, open an interactive python console:
python
-If you don't have PyQt5 or PySide2, run:
+If you don't have PyQt5, PySide2 or PySide6, run:
.. code-block:: bash
diff --git a/examples/colormapDialog.py b/examples/colormapDialog.py
index c9e7c35..d389327 100644
--- a/examples/colormapDialog.py
+++ b/examples/colormapDialog.py
@@ -1,7 +1,7 @@
# coding: utf-8
# /*##########################################################################
#
-# Copyright (c) 2017-2018 European Synchrotron Radiation Facility
+# Copyright (c) 2017-2021 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
@@ -140,7 +140,7 @@ class ColormapDialogExample(qt.QMainWindow):
button = qt.QPushButton("Negative to positive")
button.clicked.connect(self.setDataFromNegToPos)
layout.addWidget(button)
- button = qt.QPushButton("Only non finite values")
+ button = qt.QPushButton("With non finite values")
button.clicked.connect(self.setDataWithNonFinite)
layout.addWidget(button)
@@ -259,7 +259,7 @@ class ColormapDialogExample(qt.QMainWindow):
if scipy is not None:
from scipy import ndimage
data = ndimage.gaussian_filter(data, sigma=20)
- data = numpy.random.poisson(data)
+ data = numpy.random.poisson(data).astype(numpy.float32)
data[10] = float("nan")
data[50] = float("+inf")
data[100] = float("-inf")
@@ -275,7 +275,7 @@ def main():
example = ColormapDialogExample()
example.show()
- app.exec_()
+ app.exec()
if __name__ == '__main__':
diff --git a/examples/compareImages.py b/examples/compareImages.py
index 623216a..3408a72 100644
--- a/examples/compareImages.py
+++ b/examples/compareImages.py
@@ -2,7 +2,7 @@
# coding: utf-8
# /*##########################################################################
#
-# Copyright (c) 2016-2017 European Synchrotron Radiation Facility
+# Copyright (c) 2016-2021 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
@@ -208,4 +208,4 @@ if __name__ == "__main__":
window.setFiles(options.files)
window.setVisible(True)
- app.exec_()
+ app.exec()
diff --git a/examples/compositeline.py b/examples/compositeline.py
index 892ecf3..72398e6 100644
--- a/examples/compositeline.py
+++ b/examples/compositeline.py
@@ -72,7 +72,7 @@ def main(argv=None):
addLine([70, 0], [70, 100], "_", "_", "l6", "black")
mainWindow.setVisible(True)
- return app.exec_()
+ return app.exec()
if __name__ == "__main__":
diff --git a/examples/customDataView.py b/examples/customDataView.py
index 33662e8..e02e577 100644
--- a/examples/customDataView.py
+++ b/examples/customDataView.py
@@ -96,7 +96,7 @@ def main():
widget.addView(MyColorView(widget))
widget.setData(Color.GREEN)
widget.show()
- result = app.exec_()
+ result = app.exec()
# remove ending warnings relative to QTimer
app.deleteLater()
sys.exit(result)
diff --git a/examples/customHdf5TreeModel.py b/examples/customHdf5TreeModel.py
index fde76c5..ffc0220 100644
--- a/examples/customHdf5TreeModel.py
+++ b/examples/customHdf5TreeModel.py
@@ -279,7 +279,7 @@ def main(filenames):
sys.excepthook = qt.exceptionHandler
window = Hdf5TreeViewExample(filenames)
window.show()
- result = app.exec_()
+ result = app.exec()
# remove ending warnings relative to QTimer
app.deleteLater()
sys.exit(result)
diff --git a/examples/dropZones.py b/examples/dropZones.py
index 68d0a57..6593bbb 100644
--- a/examples/dropZones.py
+++ b/examples/dropZones.py
@@ -140,7 +140,7 @@ class DragLabel(qt.QLabel):
self._url.path().encode(encoding='utf-8'))
drag = qt.QDrag(self)
drag.setMimeData(mimeData)
- dropAction = drag.exec_()
+ dropAction = drag.exec()
class DragAndDropExample(qt.QMainWindow):
@@ -178,7 +178,7 @@ def main():
silx.io.url.DataUrl(file_path=filename, data_path='/curve', scheme="silx")))
example.setWindowTitle("Drag&Drop URLs sample code")
example.show()
- app.exec_()
+ app.exec()
if __name__ == "__main__":
diff --git a/examples/exampleBaseline.py b/examples/exampleBaseline.py
index edd0fc3..b53b412 100644
--- a/examples/exampleBaseline.py
+++ b/examples/exampleBaseline.py
@@ -2,7 +2,7 @@
# coding: utf-8
# /*##########################################################################
#
-# Copyright (c) 2017-2018 European Synchrotron Radiation Facility
+# Copyright (c) 2017-2021 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
@@ -157,7 +157,7 @@ def main(argv):
plot_log = get_plot_log(backend=options.backend)
plot_log.show()
- qapp.exec_()
+ qapp.exec()
if __name__ == '__main__':
diff --git a/examples/fftPlotAction.py b/examples/fftPlotAction.py
index bdea08d..f7c819f 100755
--- a/examples/fftPlotAction.py
+++ b/examples/fftPlotAction.py
@@ -190,5 +190,5 @@ plotwin.getYAxis().setLabel("amplitude")
plotwin.getXAxis().setLabel("time")
plotwin.show()
-app.exec_()
+app.exec()
sys.excepthook = sys.__excepthook__
diff --git a/examples/fileDialog.py b/examples/fileDialog.py
index 40191bb..fa11ed5 100644
--- a/examples/fileDialog.py
+++ b/examples/fileDialog.py
@@ -2,7 +2,7 @@
# coding: utf-8
# /*##########################################################################
#
-# Copyright (c) 2016-2019 European Synchrotron Radiation Facility
+# Copyright (c) 2016-2021 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
@@ -216,7 +216,7 @@ class DialogExample(qt.QMainWindow):
dialog = self.createDialog()
# Execute the dialog as modal
- result = dialog.exec_()
+ result = dialog.exec()
self.printResult(dialog, result)
def openDialogStoredState(self):
@@ -226,7 +226,7 @@ class DialogExample(qt.QMainWindow):
dialog.restoreState(self.__state[dialog.__class__])
# Execute the dialog as modal
- result = dialog.exec_()
+ result = dialog.exec()
self.__state[dialog.__class__] = dialog.saveState()
self.printResult(dialog, result)
@@ -237,7 +237,7 @@ class DialogExample(qt.QMainWindow):
dialog.setDirectory(path)
# Execute the dialog as modal
- result = dialog.exec_()
+ result = dialog.exec()
self.printResult(dialog, result)
def openDialogAtComputer(self):
@@ -247,7 +247,7 @@ class DialogExample(qt.QMainWindow):
dialog.setDirectory(path)
# Execute the dialog as modal
- result = dialog.exec_()
+ result = dialog.exec()
self.printResult(dialog, result)
@@ -255,7 +255,7 @@ def main():
app = qt.QApplication([])
example = DialogExample()
example.show()
- app.exec_()
+ app.exec()
if __name__ == "__main__":
diff --git a/examples/findContours.py b/examples/findContours.py
index 6199ba6..acf5199 100644
--- a/examples/findContours.py
+++ b/examples/findContours.py
@@ -2,7 +2,7 @@
# coding: utf-8
# /*##########################################################################
#
-# Copyright (c) 2016-2019 European Synchrotron Radiation Facility
+# Copyright (c) 2016-2021 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
@@ -694,7 +694,7 @@ def main():
window = FindContours()
window.generateIsland()
window.show()
- result = app.exec_()
+ result = app.exec()
# remove ending warnings relative to QTimer
app.deleteLater()
return result
diff --git a/examples/hdf5widget.py b/examples/hdf5widget.py
index 0d45b8f..82ce27d 100755
--- a/examples/hdf5widget.py
+++ b/examples/hdf5widget.py
@@ -2,7 +2,7 @@
# coding: utf-8
# /*##########################################################################
#
-# Copyright (c) 2016-2019 European Synchrotron Radiation Facility
+# Copyright (c) 2016-2021 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
@@ -25,12 +25,12 @@
# ###########################################################################*/
"""Qt Hdf5 widget examples"""
+import html
import logging
import sys
import tempfile
import numpy
-import six
logging.basicConfig()
_logger = logging.getLogger("hdf5widget")
@@ -46,7 +46,6 @@ except ImportError:
import h5py
import silx.gui.hdf5
-import silx.utils.html
from silx.gui import qt
from silx.gui.data.DataViewerFrame import DataViewerFrame
from silx.gui.widgets.ThreadPoolPushButton import ThreadPoolPushButton
@@ -59,7 +58,7 @@ _file_cache = {}
def str_attrs(str_list):
"""Return a numpy array of unicode strings"""
- text_dtype = h5py.special_dtype(vlen=six.text_type)
+ text_dtype = h5py.special_dtype(vlen=str)
return numpy.array(str_list, dtype=text_dtype)
@@ -573,7 +572,7 @@ class Hdf5TreeViewExample(qt.QMainWindow):
"""Called to log event in widget
"""
def formatKey(name, value):
- name, value = silx.utils.html.escape(str(name)), silx.utils.html.escape(str(value))
+ name, value = html.escape(str(name)), html.escape(str(value))
return "<li><b>%s</b>: %s</li>" % (name, value)
text = "<html>"
@@ -791,7 +790,7 @@ def main(filenames):
sys.excepthook = qt.exceptionHandler
window = Hdf5TreeViewExample(filenames)
window.show()
- result = app.exec_()
+ result = app.exec()
# remove ending warnings relative to QTimer
app.deleteLater()
sys.exit(result)
diff --git a/examples/icons.py b/examples/icons.py
index ae77630..ff8410d 100644
--- a/examples/icons.py
+++ b/examples/icons.py
@@ -2,7 +2,7 @@
# coding: utf-8
# /*##########################################################################
#
-# Copyright (c) 2016-2018 European Synchrotron Radiation Facility
+# Copyright (c) 2016-2021 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
@@ -177,4 +177,4 @@ if __name__ == "__main__":
app = qt.QApplication([])
window = IconPreview()
window.setVisible(True)
- app.exec_()
+ app.exec()
diff --git a/examples/imageStack.py b/examples/imageStack.py
index 0437a6e..4c211b5 100644
--- a/examples/imageStack.py
+++ b/examples/imageStack.py
@@ -2,7 +2,7 @@
# coding: utf-8
# /*##########################################################################
#
-# Copyright (c) 2016-2018 European Synchrotron Radiation Facility
+# Copyright (c) 2016-2021 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
@@ -132,7 +132,7 @@ def main():
urls = create_datasets(folder=dataset_folder)
widget.setUrls(urls=urls)
widget.show()
- qapp.exec_()
+ qapp.exec()
widget.close()
shutil.rmtree(dataset_folder)
diff --git a/examples/imageview.py b/examples/imageview.py
index 81741b1..40b5dff 100755
--- a/examples/imageview.py
+++ b/examples/imageview.py
@@ -40,14 +40,76 @@ __license__ = "MIT"
__date__ = "08/11/2018"
import logging
+import numpy
+import time
+import threading
+
+from silx.gui.utils import concurrent
from silx.gui.plot.ImageView import ImageViewMainWindow
from silx.gui import qt
-import numpy
logging.basicConfig()
logger = logging.getLogger(__name__)
+Nx = 150
+Ny = 50
+
+
+class UpdateThread(threading.Thread):
+ """Thread updating the image of a :class:`~sil.gui.plot.Plot2D`
+
+ :param plot2d: The Plot2D to update."""
+
+ def __init__(self, imageview):
+ self.imageview = imageview
+ self.running = False
+ self.future_result = None
+ super(UpdateThread, self).__init__()
+
+ def start(self):
+ """Start the update thread"""
+ self.running = True
+ super(UpdateThread, self).start()
+
+ def run(self, pos={'x0': 0, 'y0': 0}):
+ """Method implementing thread loop that updates the plot
+
+ It produces an image every 10 ms or so, and
+ either updates the plot or skip the image
+ """
+ while self.running:
+ time.sleep(0.01)
+
+ # Create image
+ # width of peak
+ sigma_x = 0.15
+ sigma_y = 0.25
+ # x and y positions
+ x = numpy.linspace(-1.5, 1.5, Nx)
+ y = numpy.linspace(-1.0, 1.0, Ny)
+ xv, yv = numpy.meshgrid(x, y)
+ signal = numpy.exp(- ((xv - pos['x0']) ** 2 / sigma_x ** 2
+ + (yv - pos['y0']) ** 2 / sigma_y ** 2))
+ # add noise
+ signal += 0.3 * numpy.random.random(size=signal.shape)
+ # random walk of center of peak ('drift')
+ pos['x0'] += 0.05 * (numpy.random.random() - 0.5)
+ pos['y0'] += 0.05 * (numpy.random.random() - 0.5)
+
+ # If previous frame was not added to the plot yet, skip this one
+ if self.future_result is None or self.future_result.done():
+ # plot the data asynchronously, and
+ # keep a reference to the `future` object
+ self.future_result = concurrent.submitToQtMainThread(
+ self.imageview.setImage, signal, resetzoom=False)
+
+ def stop(self):
+ """Stop the update thread"""
+ self.running = False
+ self.join(2)
+
+
def main(argv=None):
"""Display an image from a file in an :class:`ImageView` widget.
@@ -82,12 +144,17 @@ def main(argv=None):
parser.add_argument(
'filename', nargs='?',
help='EDF filename of the image to open')
+ parser.add_argument(
+ '--live', action='store_true',
+ help='Live update of a generated image')
args = parser.parse_args(args=argv)
# Open the input file
- if not args.filename:
+ edfFile = None
+ if args.live:
+ data = None
+ elif not args.filename:
logger.warning('No image file provided, displaying dummy data')
- edfFile = None
size = 512
xx, yy = numpy.ogrid[-size:size, -size:size]
data = numpy.cos(xx / (size//5)) + numpy.cos(yy / (size//5))
@@ -118,9 +185,10 @@ def main(argv=None):
colormap = mainWindow.getDefaultColormap()
colormap.setNormalization(colormap.LOGARITHM)
- mainWindow.setImage(data,
- origin=args.origin,
- scale=args.scale)
+ if data is not None:
+ mainWindow.setImage(data,
+ origin=args.origin,
+ scale=args.scale)
if edfFile is not None and nbFrames > 1:
# Add a toolbar for multi-frame EDF support
@@ -144,7 +212,12 @@ def main(argv=None):
mainWindow.show()
mainWindow.setFocus(qt.Qt.OtherFocusReason)
- return app.exec_()
+ if args.live:
+ # Start updating the plot
+ updateThread = UpdateThread(mainWindow)
+ updateThread.start()
+
+ return app.exec()
if __name__ == "__main__":
diff --git a/examples/periodicTable.py b/examples/periodicTable.py
index e329ef7..fc3985f 100644
--- a/examples/periodicTable.py
+++ b/examples/periodicTable.py
@@ -2,7 +2,7 @@
# coding: utf-8
# /*##########################################################################
#
-# Copyright (c) 2004-2017 European Synchrotron Radiation Facility
+# Copyright (c) 2004-2021 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
@@ -77,5 +77,4 @@ w.addTab(pl, "PeriodicList")
w.addTab(comboContainer, "PeriodicCombo")
w.show()
-a.exec_()
-
+a.exec()
diff --git a/examples/plot3dContextMenu.py b/examples/plot3dContextMenu.py
index d33bb8f..0802b29 100644
--- a/examples/plot3dContextMenu.py
+++ b/examples/plot3dContextMenu.py
@@ -1,7 +1,7 @@
# coding: utf-8
# /*##########################################################################
#
-# Copyright (c) 2017 European Synchrotron Radiation Facility
+# Copyright (c) 2017-2021 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
@@ -86,7 +86,7 @@ class ScalarFieldViewWithContextMenu(ScalarFieldView):
# The position received as argument is relative to Plot3DWidget
# and needs to be converted.
globalPosition = self.getPlot3DWidget().mapToGlobal(pos)
- menu.exec_(globalPosition)
+ menu.exec(globalPosition)
# Start Qt QApplication
@@ -109,4 +109,4 @@ window.setData(data)
window.addIsosurface(0.2, '#FF0000FF')
window.show()
-app.exec_()
+app.exec()
diff --git a/examples/plot3dSceneWindow.py b/examples/plot3dSceneWindow.py
index 1b2f808..436b121 100644
--- a/examples/plot3dSceneWindow.py
+++ b/examples/plot3dSceneWindow.py
@@ -1,7 +1,7 @@
# coding: utf-8
# /*##########################################################################
#
-# Copyright (c) 2017-2019 European Synchrotron Radiation Facility
+# Copyright (c) 2017-2021 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
@@ -200,4 +200,4 @@ window.show()
sys.excepthook = qt.exceptionHandler
# Run Qt event loop
-qapp.exec_()
+qapp.exec()
diff --git a/examples/plot3dUpdateScatterFromThread.py b/examples/plot3dUpdateScatterFromThread.py
index 9c2213f..a02fec6 100644
--- a/examples/plot3dUpdateScatterFromThread.py
+++ b/examples/plot3dUpdateScatterFromThread.py
@@ -167,7 +167,7 @@ def main():
updateThread = UpdateScatterThread(scatter)
updateThread.start() # Start updating the plot
- app.exec_()
+ app.exec()
updateThread.stop() # Stop updating the plot
diff --git a/examples/plotClearAction.py b/examples/plotClearAction.py
index e1130cb..6f1823a 100644
--- a/examples/plotClearAction.py
+++ b/examples/plotClearAction.py
@@ -1,7 +1,7 @@
# coding: utf-8
# /*##########################################################################
#
-# Copyright (c) 2018 European Synchrotron Radiation Facility
+# Copyright (c) 2018-2021 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
@@ -72,4 +72,4 @@ if __name__ == '__main__':
plot.addCurve((0, 1, 2, 3, 4), (0, 1, 1.5, 1, 0)) # Add a curve to the plot
plot.show() # Show the plot widget
- app.exec_() # Start Qt application
+ app.exec() # Start Qt application
diff --git a/examples/plotContextMenu.py b/examples/plotContextMenu.py
index 5f02f5f..bd1ad87 100644
--- a/examples/plotContextMenu.py
+++ b/examples/plotContextMenu.py
@@ -87,7 +87,7 @@ class PlotWidgetWithContextMenu(PlotWidget):
# plot area, and thus needs to be converted.
plotArea = self.getWidgetHandle()
globalPosition = plotArea.mapToGlobal(pos)
- menu.exec_(globalPosition)
+ menu.exec(globalPosition)
# Start the QApplication
@@ -100,4 +100,4 @@ plot.addCurve(x, numpy.sin(x), legend='sin')
# Show the widget and start the application
plot.show()
-app.exec_()
+app.exec()
diff --git a/examples/plotCurveLegendWidget.py b/examples/plotCurveLegendWidget.py
index 97c516a..98ba30b 100644
--- a/examples/plotCurveLegendWidget.py
+++ b/examples/plotCurveLegendWidget.py
@@ -1,7 +1,7 @@
# coding: utf-8
# /*##########################################################################
#
-# Copyright (c) 2018-2020 European Synchrotron Radiation Facility
+# Copyright (c) 2018-2021 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
@@ -112,7 +112,7 @@ class MyCurveLegendsWidget(CurveLegendsWidget):
functools.partial(self._switchCurveVisibility, curve))
globalPosition = self.mapToGlobal(pos)
- menu.exec_(globalPosition)
+ menu.exec(globalPosition)
# First create the QApplication
@@ -151,4 +151,4 @@ window.addDockWidget(qt.Qt.RightDockWidgetArea, dock)
window.setAttribute(qt.Qt.WA_DeleteOnClose)
window.show()
-app.exec_()
+app.exec()
diff --git a/examples/plotInteractiveImageROI.py b/examples/plotInteractiveImageROI.py
index 7254b7e..298f7af 100644
--- a/examples/plotInteractiveImageROI.py
+++ b/examples/plotInteractiveImageROI.py
@@ -2,7 +2,7 @@
# coding: utf-8
# /*##########################################################################
#
-# Copyright (c) 2018-2020 European Synchrotron Radiation Facility
+# Copyright (c) 2018-2021 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
@@ -153,6 +153,6 @@ plot.addTabbedDockWidget(dock)
# Show the widget and start the application
plot.show()
-result = app.exec_()
+result = app.exec()
app.deleteLater()
sys.exit(result)
diff --git a/examples/plotItemsSelector.py b/examples/plotItemsSelector.py
index 177489f..d7493ae 100755
--- a/examples/plotItemsSelector.py
+++ b/examples/plotItemsSelector.py
@@ -46,11 +46,11 @@ pw.show()
isd = ItemsSelectionDialog(plot=pw)
isd.setItemsSelectionMode(qt.QTableWidget.ExtendedSelection)
-result = isd.exec_()
+result = isd.exec()
if result:
for item in isd.getSelectedItems():
print(item.getName(), type(item))
else:
print("Selection cancelled")
-app.exec_()
+app.exec()
diff --git a/examples/plotLimits.py b/examples/plotLimits.py
index c7cc7f5..75440f4 100644
--- a/examples/plotLimits.py
+++ b/examples/plotLimits.py
@@ -2,7 +2,7 @@
# coding: utf-8
# /*##########################################################################
#
-# Copyright (c) 2016-2017 European Synchrotron Radiation Facility
+# Copyright (c) 2016-2021 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
@@ -90,4 +90,4 @@ if __name__ == "__main__":
app = qt.QApplication([])
window = ConstrainedViewPlot()
window.setVisible(True)
- app.exec_()
+ app.exec()
diff --git a/examples/plotProfile.py b/examples/plotProfile.py
index 931f9b4..40e199a 100644
--- a/examples/plotProfile.py
+++ b/examples/plotProfile.py
@@ -201,7 +201,7 @@ def main():
app = qt.QApplication([])
widget = Example()
widget.show()
- app.exec_()
+ app.exec()
if __name__ == "__main__":
main()
diff --git a/examples/plotROIStats.py b/examples/plotROIStats.py
index 3caff7e..e713592 100644
--- a/examples/plotROIStats.py
+++ b/examples/plotROIStats.py
@@ -248,7 +248,7 @@ def example_curve(mode):
window.setUpdateMode(mode)
window.show()
- app.exec_()
+ app.exec()
def example_image(mode):
@@ -278,7 +278,7 @@ def example_image(mode):
window.setUpdateMode(mode)
window.show()
- app.exec_()
+ app.exec()
updateThread.stop() # Stop updating the plot
@@ -314,7 +314,7 @@ def example_curve_image(mode):
updateThread.start() # Start updating the plot
window.show()
- app.exec_()
+ app.exec()
updateThread.stop() # Stop updating the plot
diff --git a/examples/plotStats.py b/examples/plotStats.py
index 030caf8..433088f 100644
--- a/examples/plotStats.py
+++ b/examples/plotStats.py
@@ -2,7 +2,7 @@
# coding: utf-8
# /*##########################################################################
#
-# Copyright (c) 2016-2019 European Synchrotron Radiation Facility
+# Copyright (c) 2016-2021 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
@@ -161,7 +161,7 @@ def main(argv):
plot.getStatsWidget().parent().setVisible(True)
plot.show()
- app.exec_()
+ app.exec()
updateThread.stop() # Stop updating the plot
diff --git a/examples/plotUpdateCurveFromThread.py b/examples/plotUpdateCurveFromThread.py
index a36e5ee..27dbf9b 100644
--- a/examples/plotUpdateCurveFromThread.py
+++ b/examples/plotUpdateCurveFromThread.py
@@ -1,7 +1,7 @@
# coding: utf-8
# /*##########################################################################
#
-# Copyright (c) 2017-2018 European Synchrotron Radiation Facility
+# Copyright (c) 2017-2021 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
@@ -95,7 +95,7 @@ def main():
updateThread = UpdateThread(plot1d)
updateThread.start() # Start updating the plot
- app.exec_()
+ app.exec()
updateThread.stop() # Stop updating the plot
diff --git a/examples/plotUpdateImageFromThread.py b/examples/plotUpdateImageFromThread.py
index 5850263..de23d3f 100644
--- a/examples/plotUpdateImageFromThread.py
+++ b/examples/plotUpdateImageFromThread.py
@@ -1,7 +1,7 @@
# coding: utf-8
# /*##########################################################################
#
-# Copyright (c) 2017-2018 European Synchrotron Radiation Facility
+# Copyright (c) 2017-2021 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
@@ -116,6 +116,7 @@ def main():
# Create a Plot2D, set its limits and display it
plot2d = Plot2D()
+ plot2d.getIntensityHistogramAction().setVisible(True)
plot2d.setLimits(0, Nx, 0, Ny)
plot2d.getDefaultColormap().setVRange(0., 1.5)
plot2d.show()
@@ -124,7 +125,7 @@ def main():
updateThread = UpdateThread(plot2d)
updateThread.start() # Start updating the plot
- app.exec_()
+ app.exec()
updateThread.stop() # Stop updating the plot
diff --git a/examples/plotWidget.py b/examples/plotWidget.py
index af64afb..5d1f4b6 100644
--- a/examples/plotWidget.py
+++ b/examples/plotWidget.py
@@ -1,7 +1,7 @@
# coding: utf-8
# /*##########################################################################
#
-# Copyright (c) 2017-2018 European Synchrotron Radiation Facility
+# Copyright (c) 2017-2021 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
@@ -64,7 +64,7 @@ class MyPlotWindow(qt.QMainWindow):
# Make ColorBarWidget background white by changing its palette
colorBar.setAutoFillBackground(True)
palette = colorBar.palette()
- palette.setColor(qt.QPalette.Background, qt.Qt.white)
+ palette.setColor(qt.QPalette.Window, qt.Qt.white)
palette.setColor(qt.QPalette.Window, qt.Qt.white)
colorBar.setPalette(palette)
@@ -178,7 +178,7 @@ def main():
window.setAttribute(qt.Qt.WA_DeleteOnClose)
window.show()
window.showImage()
- app.exec_()
+ app.exec()
if __name__ == '__main__':
diff --git a/examples/printPreview.py b/examples/printPreview.py
index 6de8209..7fe5480 100755
--- a/examples/printPreview.py
+++ b/examples/printPreview.py
@@ -2,7 +2,7 @@
# coding: utf-8
# /*##########################################################################
#
-# Copyright (c) 2016-2018 European Synchrotron Radiation Facility
+# Copyright (c) 2016-2021 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
@@ -96,4 +96,4 @@ pw3.show()
pw3.addCurve(x, numpy.cos(x * 2 * numpy.pi / 1000))
-app.exec_()
+app.exec()
diff --git a/examples/scatterMask.py b/examples/scatterMask.py
index 7a407ad..839fa3a 100644
--- a/examples/scatterMask.py
+++ b/examples/scatterMask.py
@@ -150,4 +150,4 @@ if __name__ == "__main__":
msw.setScatter(x, y, v=v)
msw.setBackgroundImage(bg_img)
msw.show()
- app.exec_()
+ app.exec()
diff --git a/examples/scatterview.py b/examples/scatterview.py
index cab32c0..5df11be 100755
--- a/examples/scatterview.py
+++ b/examples/scatterview.py
@@ -91,7 +91,7 @@ def main(argv=None):
mainWindow.show()
mainWindow.setFocus(qt.Qt.OtherFocusReason)
- return app.exec_()
+ return app.exec()
if __name__ == "__main__":
diff --git a/examples/shiftPlotAction.py b/examples/shiftPlotAction.py
index f272cda..6c5f8cf 100755
--- a/examples/shiftPlotAction.py
+++ b/examples/shiftPlotAction.py
@@ -2,7 +2,7 @@
# coding: utf-8
# /*##########################################################################
#
-# Copyright (c) 2016-2018 European Synchrotron Radiation Facility
+# Copyright (c) 2016-2021 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
@@ -110,4 +110,4 @@ plotwin.addCurve(x, y1, legend="triangle shaped curve")
plotwin.addCurve(x, y2, legend="oblique line")
plotwin.show()
-app.exec_()
+app.exec()
diff --git a/examples/simplewidget.py b/examples/simplewidget.py
index 0e9038e..0a1c336 100755
--- a/examples/simplewidget.py
+++ b/examples/simplewidget.py
@@ -219,7 +219,7 @@ def main():
sys.excepthook = qt.exceptionHandler
window = SimpleWidgetExample()
window.show()
- result = app.exec_()
+ result = app.exec()
# remove ending warnings relative to QTimer
app.deleteLater()
sys.excepthook = sys.__excepthook__
diff --git a/examples/stackView.py b/examples/stackView.py
index a4b6e8c..f857140 100644
--- a/examples/stackView.py
+++ b/examples/stackView.py
@@ -61,4 +61,4 @@ maskToolsWidget.setItemMaskUpdated(True)
sv.show()
-app.exec_()
+app.exec()
diff --git a/examples/syncPlotLocation.py b/examples/syncPlotLocation.py
index 55332bc..83c1ade 100644
--- a/examples/syncPlotLocation.py
+++ b/examples/syncPlotLocation.py
@@ -102,4 +102,4 @@ if __name__ == "__main__":
window = SyncPlot()
window.setAttribute(qt.Qt.WA_DeleteOnClose, True)
window.setVisible(True)
- app.exec_()
+ app.exec()
diff --git a/examples/syncaxis.py b/examples/syncaxis.py
index 02505c9..2976231 100644
--- a/examples/syncaxis.py
+++ b/examples/syncaxis.py
@@ -99,4 +99,4 @@ if __name__ == "__main__":
window = SyncPlot()
window.setAttribute(qt.Qt.WA_DeleteOnClose, True)
window.setVisible(True)
- app.exec_()
+ app.exec()
diff --git a/examples/viewer3DVolume.py b/examples/viewer3DVolume.py
index 2193402..5b86199 100644
--- a/examples/viewer3DVolume.py
+++ b/examples/viewer3DVolume.py
@@ -203,4 +203,4 @@ else:
window.addIsosurface(default_isolevel, '#FF0000FF')
window.show()
-app.exec_()
+app.exec()
diff --git a/package/debian10/control b/package/debian10/control
index d724e69..25cf293 100644
--- a/package/debian10/control
+++ b/package/debian10/control
@@ -16,7 +16,6 @@ Build-Depends: cython3 (>= 0.23.2),
python3-all-dev,
python3-dateutil,
python3-qtconsole,
- python3-six,
python3-fabio,
python3-h5py,
python3-mako,
@@ -29,6 +28,8 @@ Build-Depends: cython3 (>= 0.23.2),
python3-pyqt5,
python3-pyqt5.qtopengl,
python3-pyqt5.qtsvg,
+ python3-pytest,
+ python3-pytest-xvfb,
python3-scipy,
python3-setuptools,
python3-sphinx,
diff --git a/package/debian11/control b/package/debian11/control
index 5e387fc..775753d 100644
--- a/package/debian11/control
+++ b/package/debian11/control
@@ -34,11 +34,12 @@ Build-Depends: cython3 (>= 0.23.2),
python3-pyqt5.qtopengl-dbg,
python3-pyqt5.qtsvg,
python3-pyqt5.qtsvg-dbg,
+ python3-pytest,
+ python3-pytest-xvfb,
python3-qtconsole,
python3-scipy,
python3-scipy-dbg,
python3-setuptools,
- python3-six,
python3-sphinx,
python3-sphinxcontrib.programoutput,
xauth,
diff --git a/package/windows/README.rst b/package/windows/README.rst
index 97c1d54..cbf6fa3 100644
--- a/package/windows/README.rst
+++ b/package/windows/README.rst
@@ -4,20 +4,13 @@ Generate silx fat binary for Windows
Pre-requisites
--------------
-- PyInstaller must be installed.
- It is best to use the development version to use package specific hooks up-to-date.
- Run either::
-
- pip install -r requirements-dev.txt
-
- or::
-
- pip install https://github.com/pyinstaller/pyinstaller/archive/develop.zip
-
+- `PyInstaller <https://pyinstaller.readthedocs.io/>`_ must be installed.
+ Run: ``pip install -r requirements-dev.txt``
+- `InnoSetup <https://jrsoftware.org/isinfo.php>`_ must be installed and in the ``PATH``.
- silx and all its dependencies must be INSTALLED::
pip install silx[full]
-
+
or from the source directory::
pip install .[full]
@@ -28,10 +21,5 @@ Procedure
- Go to the ``package/windows`` folder in the source directory
- Run ``pyinstaller pyinstaller.spec``.
- This generates a fat binary in ``package/windows/dist/silx/`` for the generic launcher ``silx.exe``.
-- Run ``pyinstaller pyinstaller-silx-view.spec``.
- This generates a fat binary in ``package/windows/dist/silx-view/`` for the silx view command ``silx-view.exe``.
-- Copy ``silx-view.exe`` and ``silx-view.exe.manifest`` to ``package/windows/dist/silx/``.
- This is a hack until PyInstaller supports multiple executables (see https://github.com/pyinstaller/pyinstaller/issues/1527).
-- Zip ``package\windows\dist\silx`` to make the application available as a single zip file.
-
+ This will generates the fat binary in ``package/windows/dist/``.
+ It will then run InnoSetup to create the installer in ``package/windows/artifacts/``.
diff --git a/package/windows/create-installer.iss.template b/package/windows/create-installer.iss.template
new file mode 100644
index 0000000..ffb6af4
--- /dev/null
+++ b/package/windows/create-installer.iss.template
@@ -0,0 +1,92 @@
+[Setup]
+AppId={{A694A78C-B4D1-4983-8BC6-A84D30341EB4}
+AppName=silx view
+AppVersion=#Version
+AppVerName=silx-view-#Version
+AppPublisher=ESRF
+AppPublisherURL=https://www.silx.org
+AppSupportURL=https://github.com/silx-kit/silx
+AppUpdatesURL=https://github.com/silx-kit/silx/releases
+DefaultDirName={autopf}\silx
+DefaultGroupName=silx
+LicenseFile=..\..\LICENSE
+OutputDir=artifacts
+OutputBaseFilename=silx-#Version-x64
+Compression=lzma
+SolidCompression=yes
+ArchitecturesAllowed=x64
+ArchitecturesInstallIn64BitMode=x64
+WizardStyle=modern
+
+[Languages]
+Name: "english"; MessagesFile: "compiler:Default.isl"
+
+[Files]
+Source: "dist\silx\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs
+Source: "silx.ico"; DestDir: "{app}"
+
+[Icons]
+Name: "{group}\silx"; Filename: "{app}\silx-view.exe"; IconFilename: "{app}\silx.ico"
+Name: "{group}\Uninstall"; Filename: "{uninstallexe}"
+
+// Code from https://stackoverflow.com/questions/2000296/inno-setup-how-to-automatically-uninstall-previous-installed-version/2099805#209980
+[Code]
+
+/////////////////////////////////////////////////////////////////////
+function GetUninstallString(): String;
+var
+ sUnInstPath: String;
+ sUnInstallString: String;
+begin
+ sUnInstPath := ExpandConstant('Software\Microsoft\Windows\CurrentVersion\Uninstall\{#emit SetupSetting("AppId")}_is1');
+ sUnInstallString := '';
+ if not RegQueryStringValue(HKLM, sUnInstPath, 'UninstallString', sUnInstallString) then
+ RegQueryStringValue(HKCU, sUnInstPath, 'UninstallString', sUnInstallString);
+ Result := sUnInstallString;
+end;
+
+
+/////////////////////////////////////////////////////////////////////
+function IsUpgrade(): Boolean;
+begin
+ Result := (GetUninstallString() <> '');
+end;
+
+
+/////////////////////////////////////////////////////////////////////
+function UnInstallOldVersion(): Integer;
+var
+ sUnInstallString: String;
+ iResultCode: Integer;
+begin
+ // Return Values:
+ // 1 - uninstall string is empty
+ // 2 - error executing the UnInstallString
+ // 3 - successfully executed the UnInstallString
+
+ // default return value
+ Result := 0;
+
+ // get the uninstall string of the old app
+ sUnInstallString := GetUninstallString();
+ if sUnInstallString <> '' then begin
+ sUnInstallString := RemoveQuotes(sUnInstallString);
+ if Exec(sUnInstallString, '/VERYSILENT /NORESTART /SUPPRESSMSGBOXES','', SW_HIDE, ewWaitUntilTerminated, iResultCode) then
+ Result := 3
+ else
+ Result := 2;
+ end else
+ Result := 1;
+end;
+
+/////////////////////////////////////////////////////////////////////
+procedure CurStepChanged(CurStep: TSetupStep);
+begin
+ if (CurStep=ssInstall) then
+ begin
+ if (IsUpgrade()) then
+ begin
+ UnInstallOldVersion();
+ end;
+ end;
+end;
diff --git a/package/windows/pyinstaller-silx-view.spec b/package/windows/pyinstaller-silx-view.spec
deleted file mode 100644
index cf01fd1..0000000
--- a/package/windows/pyinstaller-silx-view.spec
+++ /dev/null
@@ -1,55 +0,0 @@
-# -*- mode: python -*-
-import os.path
-from PyInstaller.utils.hooks import collect_data_files, collect_submodules
-
-datas = []
-
-PROJECT_PATH = os.path.abspath(os.path.join(SPECPATH, "..", ".."))
-datas.append((os.path.join(PROJECT_PATH, "README.rst"), "."))
-datas.append((os.path.join(PROJECT_PATH, "LICENSE"), "."))
-datas.append((os.path.join(PROJECT_PATH, "copyright"), "."))
-datas += collect_data_files("silx.resources")
-
-
-hiddenimports = collect_submodules('fabio')
-
-
-block_cipher = None
-
-
-a = Analysis(['bootstrap-silx-view.py'],
- pathex=[],
- binaries=[],
- datas=datas,
- hiddenimports=hiddenimports,
- hookspath=[],
- runtime_hooks=[],
- excludes=[],
- win_no_prefer_redirects=False,
- win_private_assemblies=False,
- cipher=block_cipher,
- noarchive=False)
-
-pyz = PYZ(a.pure,
- a.zipped_data,
- cipher=block_cipher)
-
-exe = EXE(pyz,
- a.scripts,
- [],
- exclude_binaries=True,
- name='silx-view',
- debug=False,
- bootloader_ignore_signals=False,
- strip=False,
- upx=False,
- console=False,
- icon='silx.ico')
-
-coll = COLLECT(exe,
- a.binaries,
- a.zipfiles,
- a.datas,
- strip=False,
- upx=False,
- name='silx-view')
diff --git a/package/windows/pyinstaller.spec b/package/windows/pyinstaller.spec
index 548e41a..59b66c1 100644
--- a/package/windows/pyinstaller.spec
+++ b/package/windows/pyinstaller.spec
@@ -1,5 +1,9 @@
# -*- mode: python -*-
import os.path
+from pathlib import Path
+import shutil
+import subprocess
+
from PyInstaller.utils.hooks import collect_data_files, collect_submodules
datas = []
@@ -9,47 +13,131 @@ datas.append((os.path.join(PROJECT_PATH, "README.rst"), "."))
datas.append((os.path.join(PROJECT_PATH, "LICENSE"), "."))
datas.append((os.path.join(PROJECT_PATH, "copyright"), "."))
datas += collect_data_files("silx.resources")
+datas += collect_data_files("hdf5plugin")
-hiddenimports = collect_submodules('fabio')
+hiddenimports = []
+hiddenimports += collect_submodules('fabio')
+hiddenimports += collect_submodules('hdf5plugin')
block_cipher = None
-a = Analysis(['bootstrap.py'],
- pathex=[],
- binaries=[],
- datas=datas,
- hiddenimports=hiddenimports,
- hookspath=[],
- runtime_hooks=[],
- excludes=[],
- win_no_prefer_redirects=False,
- win_private_assemblies=False,
- cipher=block_cipher,
- noarchive=False)
-
-pyz = PYZ(a.pure,
- a.zipped_data,
- cipher=block_cipher)
-
-exe = EXE(pyz,
- a.scripts,
- [],
- exclude_binaries=True,
- name='silx',
- debug=False,
- bootloader_ignore_signals=False,
- strip=False,
- upx=False,
- console=True,
- icon='silx.ico')
-
-coll = COLLECT(exe,
- a.binaries,
- a.zipfiles,
- a.datas,
- strip=False,
- upx=False,
- name='silx')
+silx_a = Analysis(
+ ['bootstrap.py'],
+ pathex=[],
+ binaries=[],
+ datas=datas,
+ hiddenimports=hiddenimports,
+ hookspath=[],
+ runtime_hooks=[],
+ excludes=[],
+ win_no_prefer_redirects=False,
+ win_private_assemblies=False,
+ cipher=block_cipher,
+ noarchive=False)
+
+silx_view_a = Analysis(
+ ['bootstrap-silx-view.py'],
+ pathex=[],
+ binaries=[],
+ datas=datas,
+ hiddenimports=hiddenimports,
+ hookspath=[],
+ runtime_hooks=[],
+ excludes=[],
+ win_no_prefer_redirects=False,
+ win_private_assemblies=False,
+ cipher=block_cipher,
+ noarchive=False)
+
+MERGE(
+ (silx_a, 'silx', os.path.join('silx', 'silx')),
+ (silx_view_a, 'silx-view', os.path.join('silx-view', 'silx-view')),
+)
+
+
+silx_pyz = PYZ(
+ silx_a.pure,
+ silx_a.zipped_data,
+ cipher=block_cipher)
+
+silx_exe = EXE(
+ silx_pyz,
+ silx_a.scripts,
+ silx_a.dependencies,
+ [],
+ exclude_binaries=True,
+ name='silx',
+ debug=False,
+ bootloader_ignore_signals=False,
+ strip=False,
+ upx=False,
+ console=True,
+ icon='silx.ico')
+
+silx_coll = COLLECT(
+ silx_exe,
+ silx_a.binaries,
+ silx_a.zipfiles,
+ silx_a.datas,
+ strip=False,
+ upx=False,
+ name='silx')
+
+
+silx_view_pyz = PYZ(
+ silx_view_a.pure,
+ silx_view_a.zipped_data,
+ cipher=block_cipher)
+
+silx_view_exe = EXE(
+ silx_view_pyz,
+ silx_view_a.scripts,
+ silx_view_a.dependencies,
+ [],
+ exclude_binaries=True,
+ name='silx-view',
+ debug=False,
+ bootloader_ignore_signals=False,
+ strip=False,
+ upx=False,
+ console=False,
+ icon='silx.ico')
+
+silx_view_coll = COLLECT(
+ silx_view_exe,
+ silx_view_a.binaries,
+ silx_view_a.zipfiles,
+ silx_view_a.datas,
+ strip=False,
+ upx=False,
+ name='silx-view')
+
+
+# Fix MERGE by copying produced silx-view.exe file
+def move_silx_view_exe():
+ dist = Path(SPECPATH) / 'dist'
+ shutil.copy2(
+ src=dist / 'silx-view' / 'silx-view.exe',
+ dst=dist / 'silx',
+ )
+ shutil.rmtree(dist / 'silx-view')
+
+move_silx_view_exe()
+
+# Run innosetup
+def innosetup():
+ from silx import version
+
+ config_name = "create-installer.iss"
+ with open(config_name + '.template') as f:
+ content = f.read().replace("#Version", version)
+ with open(config_name, "w") as f:
+ f.write(content)
+
+ subprocess.call(["iscc", os.path.join(SPECPATH, config_name)])
+ os.remove(config_name)
+
+innosetup()
diff --git a/pyproject.toml b/pyproject.toml
index c80dee7..c92bf42 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -5,3 +5,4 @@ requires = [
"numpy>=1.12",
"Cython>=0.21.1"
]
+build-backend = "setuptools.build_meta" \ No newline at end of file
diff --git a/qtdesigner_plugins/plot1dplugin.py b/qtdesigner_plugins/plot1dplugin.py
index 86982af..8bfdc50 100644
--- a/qtdesigner_plugins/plot1dplugin.py
+++ b/qtdesigner_plugins/plot1dplugin.py
@@ -2,7 +2,7 @@
# coding: utf-8
# /*##########################################################################
#
-# Copyright (c) 2016 European Synchrotron Radiation Facility
+# Copyright (c) 2016-2021 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
@@ -32,9 +32,7 @@ __date__ = "30/05/2016"
from silx.gui import icons, qt
-if qt.BINDING == 'PyQt4':
- from PyQt4 import QtDesigner
-elif qt.BINDING == 'PyQt5':
+if qt.BINDING == 'PyQt5':
from PyQt5 import QtDesigner
else:
raise RuntimeError("Unsupport Qt BINDING: %s" % qt.BINDING)
diff --git a/qtdesigner_plugins/plot2dplugin.py b/qtdesigner_plugins/plot2dplugin.py
index 1a07510..31c7557 100644
--- a/qtdesigner_plugins/plot2dplugin.py
+++ b/qtdesigner_plugins/plot2dplugin.py
@@ -2,7 +2,7 @@
# coding: utf-8
# /*##########################################################################
#
-# Copyright (c) 2016 European Synchrotron Radiation Facility
+# Copyright (c) 2016-2021 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
@@ -32,9 +32,7 @@ __date__ = "30/05/2016"
from silx.gui import icons, qt
-if qt.BINDING == 'PyQt4':
- from PyQt4 import QtDesigner
-elif qt.BINDING == 'PyQt5':
+if qt.BINDING == 'PyQt5':
from PyQt5 import QtDesigner
else:
raise RuntimeError("Unsupport Qt BINDING: %s" % qt.BINDING)
diff --git a/qtdesigner_plugins/plotwidgetplugin.py b/qtdesigner_plugins/plotwidgetplugin.py
index 6cc97a5..5c92ebe 100644
--- a/qtdesigner_plugins/plotwidgetplugin.py
+++ b/qtdesigner_plugins/plotwidgetplugin.py
@@ -2,7 +2,7 @@
# coding: utf-8
# /*##########################################################################
#
-# Copyright (c) 2015-2016 European Synchrotron Radiation Facility
+# Copyright (c) 2015-2021 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
@@ -32,9 +32,7 @@ __date__ = "30/05/2016"
from silx.gui import qt, icons
-if qt.BINDING == 'PyQt4':
- from PyQt4 import QtDesigner
-elif qt.BINDING == 'PyQt5':
+if qt.BINDING == 'PyQt5':
from PyQt5 import QtDesigner
else:
raise RuntimeError("Unsupport Qt BINDING: %s" % qt.BINDING)
diff --git a/qtdesigner_plugins/plotwindowplugin.py b/qtdesigner_plugins/plotwindowplugin.py
index b666399..89e6c47 100644
--- a/qtdesigner_plugins/plotwindowplugin.py
+++ b/qtdesigner_plugins/plotwindowplugin.py
@@ -2,7 +2,7 @@
# coding: utf-8
# /*##########################################################################
#
-# Copyright (c) 2015-2016 European Synchrotron Radiation Facility
+# Copyright (c) 2015-2021 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
@@ -32,9 +32,7 @@ __date__ = "30/05/2016"
from silx.gui import icons, qt
-if qt.BINDING == 'PyQt4':
- from PyQt4 import QtDesigner
-elif qt.BINDING == 'PyQt5':
+if qt.BINDING == 'PyQt5':
from PyQt5 import QtDesigner
else:
raise RuntimeError("Unsupport Qt BINDING: %s" % qt.BINDING)
diff --git a/requirements-dev.txt b/requirements-dev.txt
index dac7fad..b5eea71 100644
--- a/requirements-dev.txt
+++ b/requirements-dev.txt
@@ -4,11 +4,15 @@
-r requirements.txt
wheel # To build wheels
Sphinx # To build the documentation in doc/
-lxml # For test coverage in run_test.py
-coverage # For test coverage in run_test.py
pillow # For loading images in documentation generation
nbsphinx # For converting ipynb in documentation
pandoc # For documentation Qt snapshot updates
+pytest # For testing
+pytest-xvfb # For GUI testing
+pytest-cov # For coverage
+
+hdf5plugin # For HDF5 compression filters handling
+
# Use dev version of PyInstaller to keep hooks up-to-date
https://github.com/pyinstaller/pyinstaller/archive/develop.zip; sys_platform == "win32"
diff --git a/requirements.txt b/requirements.txt
index fb5690d..06f57e1 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -3,7 +3,7 @@
--trusted-host www.silx.org
--find-links http://www.silx.org/pub/wheelhouse/
---only-binary numpy,h5py,scipy,PySide2,PyQt5
+--only-binary numpy,h5py,scipy,PySide2,PyQt5,PySide6
# Required dependencies (from setup.py setup_requires and install_requires)
numpy >= 1.12
@@ -11,7 +11,6 @@ setuptools
Cython >= 0.21.1
h5py
fabio >= 0.9
-six
# Extra dependencies (from setup.py extra_requires 'full' target)
pyopencl; platform_machine in "i386, x86_64, AMD64" # For silx.opencl
@@ -22,4 +21,4 @@ PyOpenGL # For silx.gui.plot3d
python-dateutil # For silx.gui.plot
scipy # For silx.math.fit demo, silx.image.sift demo, silx.image.sift.test
Pillow # For silx.opencl.image.test
-PyQt5 # or PySide2 # For silx.gui
+PyQt5 # PySide2, PySide6 # For silx.gui
diff --git a/run_tests.py b/run_tests.py
index 5d3155a..bc8efe8 100755
--- a/run_tests.py
+++ b/run_tests.py
@@ -2,7 +2,7 @@
# coding: utf8
# /*##########################################################################
#
-# Copyright (c) 2015-2020 European Synchrotron Radiation Facility
+# Copyright (c) 2015-2021 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
@@ -40,43 +40,9 @@ import logging
import os
import subprocess
import sys
-import time
-import unittest
-import collections
-from argparse import ArgumentParser
+import importlib
-class StreamHandlerUnittestReady(logging.StreamHandler):
- """The unittest class TestResult redefine sys.stdout/err to capture
- stdout/err from tests and to display them only when a test fail.
- This class allow to use unittest stdout-capture by using the last sys.stdout
- and not a cached one.
- """
-
- def emit(self, record):
- """
- :type record: logging.LogRecord
- """
- self.stream = sys.stderr
- super(StreamHandlerUnittestReady, self).emit(record)
-
- def flush(self):
- pass
-
-
-def createBasicHandler():
- """Create the handler using the basic configuration"""
- hdlr = StreamHandlerUnittestReady()
- fs = logging.BASIC_FORMAT
- dfs = None
- fmt = logging.Formatter(fs, dfs)
- hdlr.setFormatter(fmt)
- return hdlr
-
-
-# Use an handler compatible with unittests, else use_buffer is not working
-logging.root.addHandler(createBasicHandler())
-
# Capture all default warnings
logging.captureWarnings(True)
import warnings
@@ -87,25 +53,6 @@ logger.setLevel(logging.WARNING)
logger.info("Python %s %s", sys.version, tuple.__itemsize__ * 8)
-try:
- import resource
-except ImportError:
- resource = None
- logger.warning("resource module missing")
-
-try:
- import importlib
- importer = importlib.import_module
-except ImportError:
-
- def importer(name):
- module = __import__(name)
- # returns the leaf module, instead of the root module
- subnames = name.split(".")
- subnames.pop(0)
- for subname in subnames:
- module = getattr(module, subname)
- return module
try:
import numpy
@@ -136,123 +83,6 @@ def get_project_name(root_dir):
return name.split()[-1].decode('ascii')
-class TextTestResultWithSkipList(unittest.TextTestResult):
- """Override default TextTestResult to display list of skipped tests at the
- end
- """
-
- def printErrors(self):
- unittest.TextTestResult.printErrors(self)
- # Print skipped tests at the end
- self.printGroupedList("SKIPPED", self.skipped)
-
- def printGroupedList(self, flavour, errors):
- grouped = collections.OrderedDict()
-
- for test, err in errors:
- if err in grouped:
- grouped[err] = grouped[err] + [test]
- else:
- grouped[err] = [test]
-
- for err, tests in grouped.items():
- self.stream.writeln(self.separator1)
- for test in tests:
- self.stream.writeln("%s: %s" % (flavour, self.getDescription(test)))
- self.stream.writeln(self.separator2)
- self.stream.writeln("%s" % err)
-
-
-class ProfileTextTestResult(unittest.TextTestRunner.resultclass):
-
- def __init__(self, *arg, **kwarg):
- unittest.TextTestRunner.resultclass.__init__(self, *arg, **kwarg)
- self.logger = logging.getLogger("memProf")
- self.logger.setLevel(min(logging.INFO, logging.root.level))
- self.logger.handlers.append(logging.FileHandler("profile.log"))
-
- def startTest(self, test):
- unittest.TextTestRunner.resultclass.startTest(self, test)
- if resource:
- self.__mem_start = \
- resource.getrusage(resource.RUSAGE_SELF).ru_maxrss
- self.__time_start = time.time()
-
- def stopTest(self, test):
- unittest.TextTestRunner.resultclass.stopTest(self, test)
- # see issue 311. For other platform, get size of ru_maxrss in "man getrusage"
- if sys.platform == "darwin":
- ratio = 1e-6
- else:
- ratio = 1e-3
- if resource:
- memusage = (resource.getrusage(resource.RUSAGE_SELF).ru_maxrss -
- self.__mem_start) * ratio
- else:
- memusage = 0
- self.logger.info("Time: %.3fs \t RAM: %.3f Mb\t%s",
- time.time() - self.__time_start,
- memusage, test.id())
-
-
-def report_rst(cov, package, version="0.0.0", base=""):
- """
- Generate a report of test coverage in RST (for Sphinx inclusion)
-
- :param cov: test coverage instance
- :param str package: Name of the package
- :param str base: base directory of modules to include in the report
- :return: RST string
- """
- import tempfile
- fd, fn = tempfile.mkstemp(suffix=".xml")
- os.close(fd)
- cov.xml_report(outfile=fn)
-
- from lxml import etree
- xml = etree.parse(fn)
- classes = xml.xpath("//class")
-
- line0 = "Test coverage report for %s" % package
- res = [line0, "=" * len(line0), ""]
- res.append("Measured on *%s* version %s, %s" %
- (package, version, time.strftime("%d/%m/%Y")))
- res += ["",
- ".. csv-table:: Test suite coverage",
- ' :header: "Name", "Stmts", "Exec", "Cover"',
- ' :widths: 35, 8, 8, 8',
- '']
- tot_sum_lines = 0
- tot_sum_hits = 0
-
- for cl in classes:
- name = cl.get("name")
- fname = cl.get("filename")
- if not os.path.abspath(fname).startswith(base):
- continue
- lines = cl.find("lines").getchildren()
- hits = [int(i.get("hits")) for i in lines]
-
- sum_hits = sum(hits)
- sum_lines = len(lines)
-
- cover = 100.0 * sum_hits / sum_lines if sum_lines else 0
-
- if base:
- name = os.path.relpath(fname, base)
-
- res.append(' "%s", "%s", "%s", "%.1f %%"' %
- (name, sum_lines, sum_hits, cover))
- tot_sum_lines += sum_lines
- tot_sum_hits += sum_hits
- res.append("")
- res.append(' "%s total", "%s", "%s", "%.1f %%"' %
- (package, tot_sum_lines, tot_sum_hits,
- 100.0 * tot_sum_hits / tot_sum_lines if tot_sum_lines else 0))
- res.append("")
- return os.linesep.join(res)
-
-
def is_debug_python():
"""Returns true if the Python interpreter is in debug mode."""
try:
@@ -304,14 +134,9 @@ def build_project(name, root_dir):
def import_project_module(project_name, project_dir):
"""Import project module, from the system of from the project directory"""
- # Prevent importing from source directory
- if (os.path.dirname(os.path.abspath(__file__)) == os.path.abspath(sys.path[0])):
- removed_from_sys_path = sys.path.pop(0)
- logger.info("Patched sys.path, removed: '%s'", removed_from_sys_path)
-
if "--installed" in sys.argv:
try:
- module = importer(project_name)
+ module = importlib.import_module(project_name)
except Exception:
logger.error("Cannot run tests on installed version: %s not installed or raising error.",
project_name)
@@ -322,25 +147,13 @@ def import_project_module(project_name, project_dir):
logging.error("Built project is not available !!! investigate")
sys.path.insert(0, build_dir)
logger.warning("Patched sys.path, added: '%s'", build_dir)
- module = importer(project_name)
+ module = importlib.import_module(project_name)
return module
-def get_test_options(project_module):
- """Returns the test options if available, else None"""
- module_name = project_module.__name__ + '.test.utils'
- logger.info('Import %s', module_name)
- try:
- test_utils = importer(module_name)
- except ImportError:
- logger.warning("No module named '%s'. No test options available.", module_name)
- return None
-
- test_options = getattr(test_utils, "test_options", None)
- return test_options
-
-
if __name__ == "__main__": # Needed for multiprocessing support on Windows
+ import pytest
+
PROJECT_DIR = os.path.dirname(os.path.abspath(__file__))
PROJECT_NAME = get_project_name(PROJECT_DIR)
logger.info("Project name: %s", PROJECT_NAME)
@@ -349,143 +162,20 @@ if __name__ == "__main__": # Needed for multiprocessing support on Windows
PROJECT_VERSION = getattr(project_module, 'version', '')
PROJECT_PATH = project_module.__path__[0]
- test_options = get_test_options(project_module)
- """Contains extra configuration for the tests."""
-
- epilog = """Environment variables:
- WITH_QT_TEST=False to disable graphical tests
- SILX_OPENCL=False to disable OpenCL tests
- SILX_TEST_LOW_MEM=True to disable tests taking large amount of memory
- GPU=False to disable the use of a GPU with OpenCL test
- WITH_GL_TEST=False to disable tests using OpenGL
- """
- parser = ArgumentParser(description='Run the tests.',
- epilog=epilog)
-
- parser.add_argument("--installed",
- action="store_true", dest="installed", default=False,
- help=("Test the installed version instead of" +
- "building from the source"))
- parser.add_argument("-c", "--coverage", dest="coverage",
- action="store_true", default=False,
- help=("Report code coverage" +
- "(requires 'coverage' and 'lxml' module)"))
- parser.add_argument("-m", "--memprofile", dest="memprofile",
- action="store_true", default=False,
- help="Report memory profiling")
- parser.add_argument("-v", "--verbose", default=0,
- action="count", dest="verbose",
- help="Increase verbosity. Option -v prints additional " +
- "INFO messages. Use -vv for full verbosity, " +
- "including debug messages and test help strings.")
- parser.add_argument("--qt-binding", dest="qt_binding", default=None,
- help="Force using a Qt binding, from 'PyQt4', 'PyQt5', or 'PySide'")
- if test_options is not None:
- test_options.add_parser_argument(parser)
-
- default_test_name = "%s.test.suite" % PROJECT_NAME
- parser.add_argument("test_name", nargs='*',
- default=(default_test_name,),
- help="Test names to run (Default: %s)" % default_test_name)
- options = parser.parse_args()
- sys.argv = [sys.argv[0]]
-
- test_verbosity = 1
- use_buffer = True
- if options.verbose == 1:
- logging.root.setLevel(logging.INFO)
- logger.info("Set log level: INFO")
- test_verbosity = 2
- use_buffer = False
- elif options.verbose > 1:
- logging.root.setLevel(logging.DEBUG)
- logger.info("Set log level: DEBUG")
- test_verbosity = 2
- use_buffer = False
-
- if options.coverage:
- logger.info("Running test-coverage")
- import coverage
- omits = ["*test*", "*third_party*", "*/setup.py",
- # temporary test modules (silx.math.fit.test.test_fitmanager)
- "*customfun.py", ]
- try:
- cov = coverage.Coverage(omit=omits)
- except AttributeError:
- cov = coverage.coverage(omit=omits)
- cov.start()
-
- if options.qt_binding:
- binding = options.qt_binding.lower()
- if binding == "pyqt4":
- logger.info("Force using PyQt4")
- if sys.version < "3.0.0":
- try:
- import sip
- sip.setapi("QString", 2)
- sip.setapi("QVariant", 2)
- except Exception:
- logger.warning("Cannot set sip API")
- import PyQt4.QtCore # noqa
- elif binding == "pyqt5":
- logger.info("Force using PyQt5")
- import PyQt5.QtCore # noqa
- elif binding == "pyside":
- logger.info("Force using PySide")
- import PySide.QtCore # noqa
- elif binding == "pyside2":
- logger.info("Force using PySide2")
- import PySide2.QtCore # noqa
- else:
- raise ValueError("Qt binding '%s' is unknown" % options.qt_binding)
-
- # Run the tests
- runnerArgs = {}
- runnerArgs["verbosity"] = test_verbosity
- runnerArgs["buffer"] = use_buffer
- if options.memprofile:
- runnerArgs["resultclass"] = ProfileTextTestResult
- else:
- runnerArgs["resultclass"] = TextTestResultWithSkipList
- runner = unittest.TextTestRunner(**runnerArgs)
-
- logger.warning("Test %s %s from %s",
- PROJECT_NAME, PROJECT_VERSION, PROJECT_PATH)
-
- test_module_name = PROJECT_NAME + '.test'
- logger.info('Import %s', test_module_name)
- test_module = importer(test_module_name)
- test_suite = unittest.TestSuite()
+ def normalize_option(option):
+ option_parts = option.split(os.path.sep)
+ if option_parts == ["src", "silx"]:
+ return PROJECT_PATH
+ if option_parts[:2] == ["src", "silx"]:
+ return os.path.join(PROJECT_PATH, *option_parts[2:])
+ return option
- if test_options is not None:
- # Configure the test options according to the command lines and the the environment
- test_options.configure(options)
- else:
- logger.warning("No test options available.")
-
- if not options.test_name:
- # Do not use test loader to avoid cryptic exception
- # when an error occur during import
- project_test_suite = getattr(test_module, 'suite')
- test_suite.addTest(project_test_suite())
- else:
- test_suite.addTest(
- unittest.defaultTestLoader.loadTestsFromNames(options.test_name))
-
- # Display the result when using CTRL-C
- unittest.installHandler()
-
- result = runner.run(test_suite)
-
- if result.wasSuccessful():
- exit_status = 0
- else:
- exit_status = 1
+ args = [normalize_option(p) for p in sys.argv[1:] if p != "--installed"]
- if options.coverage:
- cov.stop()
- cov.save()
- with open("coverage.rst", "w") as fn:
- fn.write(report_rst(cov, PROJECT_NAME, PROJECT_VERSION, PROJECT_PATH))
+ # Run test on PROJECT_PATH if nothing is specified
+ without_options = [a for a in args if not a.startswith("-")]
+ if len(without_options) == 0:
+ args += [PROJECT_PATH]
- sys.exit(exit_status)
+ argv = ["--rootdir", PROJECT_PATH] + args
+ sys.exit(pytest.main(argv))
diff --git a/setup.py b/setup.py
index bc43c32..c095b89 100644
--- a/setup.py
+++ b/setup.py
@@ -47,7 +47,6 @@ from distutils.command.clean import clean as Clean
from distutils.command.build import build as _build
try:
from setuptools import Command
- from setuptools.command.build_py import build_py as _build_py
from setuptools.command.sdist import sdist
try:
from Cython.Build import build_ext
@@ -60,7 +59,6 @@ except ImportError:
from numpy.distutils.core import Command
except ImportError:
from distutils.core import Command
- from distutils.command.build_py import build_py as _build_py
from distutils.command.sdist import sdist
try:
from Cython.Build import build_ext
@@ -88,13 +86,14 @@ export LC_ALL=en_US.utf-8
""")
-def get_version():
- """Returns current version number from version.py file"""
- dirname = os.path.dirname(os.path.abspath(__file__))
+def get_version(debian=False):
+ """Returns current version number from _version.py file"""
+ dirname = os.path.join(
+ os.path.dirname(os.path.abspath(__file__)), "src", PROJECT)
sys.path.insert(0, dirname)
- import version
+ import _version
sys.path = sys.path[1:]
- return version.strictversion
+ return _version.debianversion if debian else _version.strictversion
def get_readme():
@@ -106,7 +105,7 @@ def get_readme():
return long_description
-classifiers = ["Development Status :: 4 - Beta",
+classifiers = ["Development Status :: 5 - Production/Stable",
"Environment :: Console",
"Environment :: MacOS X",
"Environment :: Win32 (MS Windows)",
@@ -125,22 +124,6 @@ classifiers = ["Development Status :: 4 - Beta",
"Topic :: Software Development :: Libraries :: Python Modules",
]
-# ########## #
-# version.py #
-# ########## #
-
-
-class build_py(_build_py):
- """
- Enhanced build_py which copies version.py to <PROJECT>._version.py
- """
-
- def find_package_modules(self, package, package_dir):
- modules = _build_py.find_package_modules(self, package, package_dir)
- if package == PROJECT:
- modules.append((PROJECT, '_version', 'version.py'))
- return modules
-
########
# Test #
########
@@ -477,7 +460,9 @@ def configuration(parent_package='', top_path=None):
assume_default_configuration=True,
delegate_options_to_subpackages=True,
quiet=True)
- config.add_subpackage(PROJECT)
+ config.add_subpackage(
+ PROJECT, subpackage_path=os.path.join(
+ os.path.abspath(os.path.dirname(__file__)), 'src', PROJECT))
return config
# ############## #
@@ -779,8 +764,7 @@ class sdist_debian(sdist):
@staticmethod
def get_debian_name():
- import version
- name = "%s_%s" % (PROJECT, version.debianversion)
+ name = "%s_%s" % (PROJECT, get_version(debian=True))
return name
def prune_file_list(self):
@@ -847,8 +831,6 @@ def get_project_configuration(dry_run):
# for io support
"h5py",
"fabio>=0.9",
- # Python 2/3 compatibility
- "six",
]
# Add Python 2.7 backports
@@ -859,8 +841,6 @@ def get_project_configuration(dry_run):
install_requires.append("enum34")
install_requires.append("futures")
- setup_requires = ["setuptools", "numpy>=1.12", "Cython>=0.21.1"]
-
# extras requirements: target 'full' to install all dependencies at once
full_requires = [
# opencl
@@ -873,11 +853,18 @@ def get_project_configuration(dry_run):
'python-dateutil',
'PyQt5',
# extra
+ 'hdf5plugin',
'scipy',
'Pillow']
+ test_requires = [
+ "pytest",
+ "pytest-xvfb"
+ ]
+
extras_require = {
'full': full_requires,
+ 'test': test_requires,
}
# Here for packaging purpose only
@@ -911,7 +898,6 @@ def get_project_configuration(dry_run):
cmdclass = dict(
build=Build,
- build_py=build_py,
test=PyTest,
build_screenshots=BuildDocAndGenerateScreenshotCommand,
build_doc=BuildDocCommand,
@@ -941,7 +927,6 @@ def get_project_configuration(dry_run):
description="Software library for X-ray data analysis",
long_description=get_readme(),
install_requires=install_requires,
- setup_requires=setup_requires,
extras_require=extras_require,
cmdclass=cmdclass,
package_data=package_data,
diff --git a/silx.egg-info/PKG-INFO b/silx.egg-info/PKG-INFO
index 04ec406..43179ac 100644
--- a/silx.egg-info/PKG-INFO
+++ b/silx.egg-info/PKG-INFO
@@ -1,13 +1,13 @@
Metadata-Version: 2.1
Name: silx
-Version: 0.15.2
+Version: 1.0.0
Summary: Software library for X-ray data analysis
Home-page: http://www.silx.org/
Author: data analysis unit
Author-email: silx@esrf.fr
License: UNKNOWN
Platform: UNKNOWN
-Classifier: Development Status :: 4 - Beta
+Classifier: Development Status :: 5 - Production/Stable
Classifier: Environment :: Console
Classifier: Environment :: MacOS X
Classifier: Environment :: Win32 (MS Windows)
@@ -26,12 +26,16 @@ Classifier: Topic :: Scientific/Engineering :: Physics
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.5
Provides-Extra: full
+Provides-Extra: test
License-File: LICENSE
silx toolkit
============
+.. |silxView| image:: http://www.silx.org/doc/silx/img/silx-view-v1-0.gif
+ :height: 480px
+
The purpose of the *silx* project is to provide a collection of Python packages to support the
development of data assessment, reduction and analysis applications at synchrotron
radiation facilities.
@@ -59,8 +63,12 @@ The current version features:
* a set of applications:
* a unified viewer (*silx view filename*) for HDF5, SPEC and image file formats
+
+ |silxView|
+
* a unified converter to HDF5 format (*silx convert filename*)
+
Installation
------------
diff --git a/silx.egg-info/SOURCES.txt b/silx.egg-info/SOURCES.txt
index c6acc15..99516d4 100644
--- a/silx.egg-info/SOURCES.txt
+++ b/silx.egg-info/SOURCES.txt
@@ -10,7 +10,6 @@ requirements.txt
run_tests.py
setup.py
stdeb.cfg
-version.py
doc/source/changelog.rst
doc/source/conf.py
doc/source/index.rst
@@ -237,6 +236,7 @@ doc/source/modules/image/sift.rst
doc/source/modules/io/configdict.rst
doc/source/modules/io/convert.rst
doc/source/modules/io/dictdump.rst
+doc/source/modules/io/fioh5.rst
doc/source/modules/io/h5py_utils.rst
doc/source/modules/io/index.rst
doc/source/modules/io/nxdata.rst
@@ -399,7 +399,7 @@ package/desktop/silx.xml
package/windows/README.rst
package/windows/bootstrap-silx-view.py
package/windows/bootstrap.py
-package/windows/pyinstaller-silx-view.spec
+package/windows/create-installer.iss.template
package/windows/pyinstaller.spec
package/windows/silx.ico
qtdesigner_plugins/README.rst
@@ -407,10 +407,6 @@ qtdesigner_plugins/plot1dplugin.py
qtdesigner_plugins/plot2dplugin.py
qtdesigner_plugins/plotwidgetplugin.py
qtdesigner_plugins/plotwindowplugin.py
-silx/__init__.py
-silx/__main__.py
-silx/_config.py
-silx/setup.py
silx.egg-info/PKG-INFO
silx.egg-info/SOURCES.txt
silx.egg-info/dependency_links.txt
@@ -418,1106 +414,1122 @@ silx.egg-info/entry_points.txt
silx.egg-info/not-zip-safe
silx.egg-info/requires.txt
silx.egg-info/top_level.txt
-silx/app/__init__.py
-silx/app/convert.py
-silx/app/setup.py
-silx/app/test_.py
-silx/app/test/__init__.py
-silx/app/test/test_convert.py
-silx/app/view/About.py
-silx/app/view/ApplicationContext.py
-silx/app/view/CustomNxdataWidget.py
-silx/app/view/DataPanel.py
-silx/app/view/Viewer.py
-silx/app/view/__init__.py
-silx/app/view/main.py
-silx/app/view/setup.py
-silx/app/view/utils.py
-silx/app/view/test/__init__.py
-silx/app/view/test/test_launcher.py
-silx/app/view/test/test_view.py
-silx/gui/__init__.py
-silx/gui/colors.py
-silx/gui/console.py
-silx/gui/icons.py
-silx/gui/printer.py
-silx/gui/setup.py
-silx/gui/_glutils/Context.py
-silx/gui/_glutils/FramebufferTexture.py
-silx/gui/_glutils/OpenGLWidget.py
-silx/gui/_glutils/Program.py
-silx/gui/_glutils/Texture.py
-silx/gui/_glutils/VertexBuffer.py
-silx/gui/_glutils/__init__.py
-silx/gui/_glutils/font.py
-silx/gui/_glutils/gl.py
-silx/gui/_glutils/utils.py
-silx/gui/data/ArrayTableModel.py
-silx/gui/data/ArrayTableWidget.py
-silx/gui/data/DataViewer.py
-silx/gui/data/DataViewerFrame.py
-silx/gui/data/DataViewerSelector.py
-silx/gui/data/DataViews.py
-silx/gui/data/Hdf5TableView.py
-silx/gui/data/HexaTableView.py
-silx/gui/data/NXdataWidgets.py
-silx/gui/data/NumpyAxesSelector.py
-silx/gui/data/RecordTableView.py
-silx/gui/data/TextFormatter.py
-silx/gui/data/_RecordPlot.py
-silx/gui/data/_VolumeWindow.py
-silx/gui/data/__init__.py
-silx/gui/data/setup.py
-silx/gui/data/test/__init__.py
-silx/gui/data/test/test_arraywidget.py
-silx/gui/data/test/test_dataviewer.py
-silx/gui/data/test/test_numpyaxesselector.py
-silx/gui/data/test/test_textformatter.py
-silx/gui/dialog/AbstractDataFileDialog.py
-silx/gui/dialog/ColormapDialog.py
-silx/gui/dialog/DataFileDialog.py
-silx/gui/dialog/DatasetDialog.py
-silx/gui/dialog/FileTypeComboBox.py
-silx/gui/dialog/GroupDialog.py
-silx/gui/dialog/ImageFileDialog.py
-silx/gui/dialog/SafeFileIconProvider.py
-silx/gui/dialog/SafeFileSystemModel.py
-silx/gui/dialog/__init__.py
-silx/gui/dialog/setup.py
-silx/gui/dialog/utils.py
-silx/gui/dialog/test/__init__.py
-silx/gui/dialog/test/test_colormapdialog.py
-silx/gui/dialog/test/test_datafiledialog.py
-silx/gui/dialog/test/test_imagefiledialog.py
-silx/gui/fit/BackgroundWidget.py
-silx/gui/fit/FitConfig.py
-silx/gui/fit/FitWidget.py
-silx/gui/fit/FitWidgets.py
-silx/gui/fit/Parameters.py
-silx/gui/fit/__init__.py
-silx/gui/fit/setup.py
-silx/gui/fit/test/__init__.py
-silx/gui/fit/test/testBackgroundWidget.py
-silx/gui/fit/test/testFitConfig.py
-silx/gui/fit/test/testFitWidget.py
-silx/gui/hdf5/Hdf5Formatter.py
-silx/gui/hdf5/Hdf5HeaderView.py
-silx/gui/hdf5/Hdf5Item.py
-silx/gui/hdf5/Hdf5LoadingItem.py
-silx/gui/hdf5/Hdf5Node.py
-silx/gui/hdf5/Hdf5TreeModel.py
-silx/gui/hdf5/Hdf5TreeView.py
-silx/gui/hdf5/NexusSortFilterProxyModel.py
-silx/gui/hdf5/__init__.py
-silx/gui/hdf5/_utils.py
-silx/gui/hdf5/setup.py
-silx/gui/hdf5/test/__init__.py
-silx/gui/hdf5/test/test_hdf5.py
-silx/gui/plot/AlphaSlider.py
-silx/gui/plot/ColorBar.py
-silx/gui/plot/Colormap.py
-silx/gui/plot/ColormapDialog.py
-silx/gui/plot/Colors.py
-silx/gui/plot/CompareImages.py
-silx/gui/plot/ComplexImageView.py
-silx/gui/plot/CurvesROIWidget.py
-silx/gui/plot/ImageStack.py
-silx/gui/plot/ImageView.py
-silx/gui/plot/Interaction.py
-silx/gui/plot/ItemsSelectionDialog.py
-silx/gui/plot/LegendSelector.py
-silx/gui/plot/LimitsHistory.py
-silx/gui/plot/MaskToolsWidget.py
-silx/gui/plot/PlotActions.py
-silx/gui/plot/PlotEvents.py
-silx/gui/plot/PlotInteraction.py
-silx/gui/plot/PlotToolButtons.py
-silx/gui/plot/PlotTools.py
-silx/gui/plot/PlotWidget.py
-silx/gui/plot/PlotWindow.py
-silx/gui/plot/PrintPreviewToolButton.py
-silx/gui/plot/Profile.py
-silx/gui/plot/ProfileMainWindow.py
-silx/gui/plot/ROIStatsWidget.py
-silx/gui/plot/ScatterMaskToolsWidget.py
-silx/gui/plot/ScatterView.py
-silx/gui/plot/StackView.py
-silx/gui/plot/StatsWidget.py
-silx/gui/plot/_BaseMaskToolsWidget.py
-silx/gui/plot/__init__.py
-silx/gui/plot/setup.py
-silx/gui/plot/_utils/__init__.py
-silx/gui/plot/_utils/delaunay.py
-silx/gui/plot/_utils/dtime_ticklayout.py
-silx/gui/plot/_utils/panzoom.py
-silx/gui/plot/_utils/setup.py
-silx/gui/plot/_utils/ticklayout.py
-silx/gui/plot/_utils/test/__init__.py
-silx/gui/plot/_utils/test/test_dtime_ticklayout.py
-silx/gui/plot/_utils/test/test_ticklayout.py
-silx/gui/plot/actions/PlotAction.py
-silx/gui/plot/actions/PlotToolAction.py
-silx/gui/plot/actions/__init__.py
-silx/gui/plot/actions/control.py
-silx/gui/plot/actions/fit.py
-silx/gui/plot/actions/histogram.py
-silx/gui/plot/actions/io.py
-silx/gui/plot/actions/medfilt.py
-silx/gui/plot/actions/mode.py
-silx/gui/plot/backends/BackendBase.py
-silx/gui/plot/backends/BackendMatplotlib.py
-silx/gui/plot/backends/BackendOpenGL.py
-silx/gui/plot/backends/__init__.py
-silx/gui/plot/backends/glutils/GLPlotCurve.py
-silx/gui/plot/backends/glutils/GLPlotFrame.py
-silx/gui/plot/backends/glutils/GLPlotImage.py
-silx/gui/plot/backends/glutils/GLPlotItem.py
-silx/gui/plot/backends/glutils/GLPlotTriangles.py
-silx/gui/plot/backends/glutils/GLSupport.py
-silx/gui/plot/backends/glutils/GLText.py
-silx/gui/plot/backends/glutils/GLTexture.py
-silx/gui/plot/backends/glutils/PlotImageFile.py
-silx/gui/plot/backends/glutils/__init__.py
-silx/gui/plot/items/__init__.py
-silx/gui/plot/items/_arc_roi.py
-silx/gui/plot/items/_pick.py
-silx/gui/plot/items/_roi_base.py
-silx/gui/plot/items/axis.py
-silx/gui/plot/items/complex.py
-silx/gui/plot/items/core.py
-silx/gui/plot/items/curve.py
-silx/gui/plot/items/histogram.py
-silx/gui/plot/items/image.py
-silx/gui/plot/items/marker.py
-silx/gui/plot/items/roi.py
-silx/gui/plot/items/scatter.py
-silx/gui/plot/items/shape.py
-silx/gui/plot/matplotlib/Colormap.py
-silx/gui/plot/matplotlib/__init__.py
-silx/gui/plot/stats/__init__.py
-silx/gui/plot/stats/stats.py
-silx/gui/plot/stats/statshandler.py
-silx/gui/plot/test/__init__.py
-silx/gui/plot/test/testAlphaSlider.py
-silx/gui/plot/test/testColorBar.py
-silx/gui/plot/test/testCompareImages.py
-silx/gui/plot/test/testComplexImageView.py
-silx/gui/plot/test/testCurvesROIWidget.py
-silx/gui/plot/test/testImageStack.py
-silx/gui/plot/test/testImageView.py
-silx/gui/plot/test/testInteraction.py
-silx/gui/plot/test/testItem.py
-silx/gui/plot/test/testLegendSelector.py
-silx/gui/plot/test/testLimitConstraints.py
-silx/gui/plot/test/testMaskToolsWidget.py
-silx/gui/plot/test/testPixelIntensityHistoAction.py
-silx/gui/plot/test/testPlotInteraction.py
-silx/gui/plot/test/testPlotWidget.py
-silx/gui/plot/test/testPlotWidgetNoBackend.py
-silx/gui/plot/test/testPlotWindow.py
-silx/gui/plot/test/testRoiStatsWidget.py
-silx/gui/plot/test/testSaveAction.py
-silx/gui/plot/test/testScatterMaskToolsWidget.py
-silx/gui/plot/test/testScatterView.py
-silx/gui/plot/test/testStackView.py
-silx/gui/plot/test/testStats.py
-silx/gui/plot/test/testUtilsAxis.py
-silx/gui/plot/test/utils.py
-silx/gui/plot/tools/CurveLegendsWidget.py
-silx/gui/plot/tools/LimitsToolBar.py
-silx/gui/plot/tools/PositionInfo.py
-silx/gui/plot/tools/RadarView.py
-silx/gui/plot/tools/__init__.py
-silx/gui/plot/tools/roi.py
-silx/gui/plot/tools/toolbars.py
-silx/gui/plot/tools/profile/ScatterProfileToolBar.py
-silx/gui/plot/tools/profile/__init__.py
-silx/gui/plot/tools/profile/core.py
-silx/gui/plot/tools/profile/editors.py
-silx/gui/plot/tools/profile/manager.py
-silx/gui/plot/tools/profile/rois.py
-silx/gui/plot/tools/profile/toolbar.py
-silx/gui/plot/tools/test/__init__.py
-silx/gui/plot/tools/test/testCurveLegendsWidget.py
-silx/gui/plot/tools/test/testProfile.py
-silx/gui/plot/tools/test/testROI.py
-silx/gui/plot/tools/test/testScatterProfileToolBar.py
-silx/gui/plot/tools/test/testTools.py
-silx/gui/plot/utils/__init__.py
-silx/gui/plot/utils/axis.py
-silx/gui/plot/utils/intersections.py
-silx/gui/plot3d/ParamTreeView.py
-silx/gui/plot3d/Plot3DWidget.py
-silx/gui/plot3d/Plot3DWindow.py
-silx/gui/plot3d/SFViewParamTree.py
-silx/gui/plot3d/ScalarFieldView.py
-silx/gui/plot3d/SceneWidget.py
-silx/gui/plot3d/SceneWindow.py
-silx/gui/plot3d/__init__.py
-silx/gui/plot3d/setup.py
-silx/gui/plot3d/_model/__init__.py
-silx/gui/plot3d/_model/core.py
-silx/gui/plot3d/_model/items.py
-silx/gui/plot3d/_model/model.py
-silx/gui/plot3d/actions/Plot3DAction.py
-silx/gui/plot3d/actions/__init__.py
-silx/gui/plot3d/actions/io.py
-silx/gui/plot3d/actions/mode.py
-silx/gui/plot3d/actions/viewpoint.py
-silx/gui/plot3d/items/__init__.py
-silx/gui/plot3d/items/_pick.py
-silx/gui/plot3d/items/clipplane.py
-silx/gui/plot3d/items/core.py
-silx/gui/plot3d/items/image.py
-silx/gui/plot3d/items/mesh.py
-silx/gui/plot3d/items/mixins.py
-silx/gui/plot3d/items/scatter.py
-silx/gui/plot3d/items/volume.py
-silx/gui/plot3d/scene/__init__.py
-silx/gui/plot3d/scene/axes.py
-silx/gui/plot3d/scene/camera.py
-silx/gui/plot3d/scene/core.py
-silx/gui/plot3d/scene/cutplane.py
-silx/gui/plot3d/scene/event.py
-silx/gui/plot3d/scene/function.py
-silx/gui/plot3d/scene/interaction.py
-silx/gui/plot3d/scene/primitives.py
-silx/gui/plot3d/scene/text.py
-silx/gui/plot3d/scene/transform.py
-silx/gui/plot3d/scene/utils.py
-silx/gui/plot3d/scene/viewport.py
-silx/gui/plot3d/scene/window.py
-silx/gui/plot3d/scene/test/__init__.py
-silx/gui/plot3d/scene/test/test_transform.py
-silx/gui/plot3d/scene/test/test_utils.py
-silx/gui/plot3d/test/__init__.py
-silx/gui/plot3d/test/testGL.py
-silx/gui/plot3d/test/testScalarFieldView.py
-silx/gui/plot3d/test/testSceneWidget.py
-silx/gui/plot3d/test/testSceneWidgetPicking.py
-silx/gui/plot3d/test/testSceneWindow.py
-silx/gui/plot3d/test/testStatsWidget.py
-silx/gui/plot3d/tools/GroupPropertiesWidget.py
-silx/gui/plot3d/tools/PositionInfoWidget.py
-silx/gui/plot3d/tools/ViewpointTools.py
-silx/gui/plot3d/tools/__init__.py
-silx/gui/plot3d/tools/toolbars.py
-silx/gui/plot3d/tools/test/__init__.py
-silx/gui/plot3d/tools/test/testPositionInfoWidget.py
-silx/gui/plot3d/utils/__init__.py
-silx/gui/plot3d/utils/mng.py
-silx/gui/qt/__init__.py
-silx/gui/qt/_macosx.py
-silx/gui/qt/_pyside_dynamic.py
-silx/gui/qt/_pyside_missing.py
-silx/gui/qt/_qt.py
-silx/gui/qt/_utils.py
-silx/gui/qt/inspect.py
-silx/gui/test/__init__.py
-silx/gui/test/test_colors.py
-silx/gui/test/test_console.py
-silx/gui/test/test_icons.py
-silx/gui/test/test_qt.py
-silx/gui/test/utils.py
-silx/gui/utils/__init__.py
-silx/gui/utils/concurrent.py
-silx/gui/utils/image.py
-silx/gui/utils/matplotlib.py
-silx/gui/utils/projecturl.py
-silx/gui/utils/qtutils.py
-silx/gui/utils/signal.py
-silx/gui/utils/testutils.py
-silx/gui/utils/glutils/__init__.py
-silx/gui/utils/test/__init__.py
-silx/gui/utils/test/test.py
-silx/gui/utils/test/test_async.py
-silx/gui/utils/test/test_glutils.py
-silx/gui/utils/test/test_image.py
-silx/gui/utils/test/test_qtutils.py
-silx/gui/utils/test/test_testutils.py
-silx/gui/widgets/BoxLayoutDockWidget.py
-silx/gui/widgets/ColormapNameComboBox.py
-silx/gui/widgets/ElidedLabel.py
-silx/gui/widgets/FloatEdit.py
-silx/gui/widgets/FlowLayout.py
-silx/gui/widgets/FrameBrowser.py
-silx/gui/widgets/HierarchicalTableView.py
-silx/gui/widgets/LegendIconWidget.py
-silx/gui/widgets/MedianFilterDialog.py
-silx/gui/widgets/MultiModeAction.py
-silx/gui/widgets/PeriodicTable.py
-silx/gui/widgets/PrintGeometryDialog.py
-silx/gui/widgets/PrintPreview.py
-silx/gui/widgets/RangeSlider.py
-silx/gui/widgets/TableWidget.py
-silx/gui/widgets/ThreadPoolPushButton.py
-silx/gui/widgets/UrlSelectionTable.py
-silx/gui/widgets/WaitingPushButton.py
-silx/gui/widgets/__init__.py
-silx/gui/widgets/setup.py
-silx/gui/widgets/test/__init__.py
-silx/gui/widgets/test/test_boxlayoutdockwidget.py
-silx/gui/widgets/test/test_elidedlabel.py
-silx/gui/widgets/test/test_flowlayout.py
-silx/gui/widgets/test/test_framebrowser.py
-silx/gui/widgets/test/test_hierarchicaltableview.py
-silx/gui/widgets/test/test_legendiconwidget.py
-silx/gui/widgets/test/test_periodictable.py
-silx/gui/widgets/test/test_printpreview.py
-silx/gui/widgets/test/test_rangeslider.py
-silx/gui/widgets/test/test_tablewidget.py
-silx/gui/widgets/test/test_threadpoolpushbutton.py
-silx/image/__init__.py
-silx/image/_boundingbox.py
-silx/image/backprojection.py
-silx/image/bilinear.pyx
-silx/image/medianfilter.py
-silx/image/phantomgenerator.py
-silx/image/projection.py
-silx/image/reconstruction.py
-silx/image/setup.py
-silx/image/shapes.pyx
-silx/image/sift.py
-silx/image/tomography.py
-silx/image/utils.py
-silx/image/marchingsquares/__init__.py
-silx/image/marchingsquares/_mergeimpl.pyx
-silx/image/marchingsquares/_skimage.py
-silx/image/marchingsquares/setup.py
-silx/image/marchingsquares/include/patterns.h
-silx/image/marchingsquares/test/__init__.py
-silx/image/marchingsquares/test/test_funcapi.py
-silx/image/marchingsquares/test/test_mergeimpl.py
-silx/image/test/__init__.py
-silx/image/test/test_bb.py
-silx/image/test/test_bilinear.py
-silx/image/test/test_medianfilter.py
-silx/image/test/test_shapes.py
-silx/image/test/test_tomography.py
-silx/io/__init__.py
-silx/io/commonh5.py
-silx/io/configdict.py
-silx/io/convert.py
-silx/io/dictdump.py
-silx/io/fabioh5.py
-silx/io/h5py_utils.py
-silx/io/octaveh5.py
-silx/io/rawh5.py
-silx/io/setup.py
-silx/io/specfile.pyx
-silx/io/specfile_wrapper.pxd
-silx/io/specfilewrapper.py
-silx/io/spech5.py
-silx/io/spectoh5.py
-silx/io/url.py
-silx/io/utils.py
-silx/io/nxdata/__init__.py
-silx/io/nxdata/_utils.py
-silx/io/nxdata/parse.py
-silx/io/nxdata/write.py
-silx/io/specfile/include/Lists.h
-silx/io/specfile/include/SpecFile.h
-silx/io/specfile/include/SpecFileCython.h
-silx/io/specfile/include/SpecFileP.h
-silx/io/specfile/include/locale_management.h
-silx/io/specfile/src/locale_management.c
-silx/io/specfile/src/sfdata.c
-silx/io/specfile/src/sfheader.c
-silx/io/specfile/src/sfindex.c
-silx/io/specfile/src/sfinit.c
-silx/io/specfile/src/sflabel.c
-silx/io/specfile/src/sflists.c
-silx/io/specfile/src/sfmca.c
-silx/io/specfile/src/sftools.c
-silx/io/specfile/src/sfwrite.c
-silx/io/test/__init__.py
-silx/io/test/test_commonh5.py
-silx/io/test/test_dictdump.py
-silx/io/test/test_fabioh5.py
-silx/io/test/test_h5py_utils.py
-silx/io/test/test_nxdata.py
-silx/io/test/test_octaveh5.py
-silx/io/test/test_rawh5.py
-silx/io/test/test_specfile.py
-silx/io/test/test_specfilewrapper.py
-silx/io/test/test_spech5.py
-silx/io/test/test_spectoh5.py
-silx/io/test/test_url.py
-silx/io/test/test_utils.py
-silx/math/__init__.py
-silx/math/calibration.py
-silx/math/chistogramnd.pyx
-silx/math/chistogramnd_lut.pyx
-silx/math/colormap.pyx
-silx/math/combo.pyx
-silx/math/histogram.py
-silx/math/histogramnd_c.pxd
-silx/math/interpolate.pyx
-silx/math/marchingcubes.pyx
-silx/math/math_compatibility.pxd
-silx/math/mc.pxd
-silx/math/setup.py
-silx/math/fft/__init__.py
-silx/math/fft/basefft.py
-silx/math/fft/clfft.py
-silx/math/fft/cufft.py
-silx/math/fft/fft.py
-silx/math/fft/fftw.py
-silx/math/fft/npfft.py
-silx/math/fft/setup.py
-silx/math/fft/test/__init__.py
-silx/math/fft/test/test_fft.py
-silx/math/fit/__init__.py
-silx/math/fit/bgtheories.py
-silx/math/fit/filters.pyx
-silx/math/fit/filters_wrapper.pxd
-silx/math/fit/fitmanager.py
-silx/math/fit/fittheories.py
-silx/math/fit/fittheory.py
-silx/math/fit/functions.pyx
-silx/math/fit/functions_wrapper.pxd
-silx/math/fit/leastsq.py
-silx/math/fit/peaks.pyx
-silx/math/fit/peaks_wrapper.pxd
-silx/math/fit/setup.py
-silx/math/fit/filters/include/filters.h
-silx/math/fit/filters/src/smoothnd.c
-silx/math/fit/filters/src/snip1d.c
-silx/math/fit/filters/src/snip2d.c
-silx/math/fit/filters/src/snip3d.c
-silx/math/fit/filters/src/strip.c
-silx/math/fit/functions/include/functions.h
-silx/math/fit/functions/src/funs.c
-silx/math/fit/peaks/include/peaks.h
-silx/math/fit/peaks/src/peaks.c
-silx/math/fit/test/__init__.py
-silx/math/fit/test/test_bgtheories.py
-silx/math/fit/test/test_filters.py
-silx/math/fit/test/test_fit.py
-silx/math/fit/test/test_fitmanager.py
-silx/math/fit/test/test_functions.py
-silx/math/fit/test/test_peaks.py
-silx/math/histogramnd/include/histogramnd_c.h
-silx/math/histogramnd/include/templates.h
-silx/math/histogramnd/include/msvc/stdint.h
-silx/math/histogramnd/src/histogramnd_c.c
-silx/math/histogramnd/src/histogramnd_template.c
-silx/math/include/math_compatibility.h
-silx/math/marchingcubes/mc.hpp
-silx/math/marchingcubes/mc_lut.cpp
-silx/math/medianfilter/__init__.py
-silx/math/medianfilter/median_filter.pxd
-silx/math/medianfilter/medianfilter.pyx
-silx/math/medianfilter/setup.py
-silx/math/medianfilter/include/median_filter.hpp
-silx/math/medianfilter/test/__init__.py
-silx/math/medianfilter/test/benchmark.py
-silx/math/medianfilter/test/test_medianfilter.py
-silx/math/test/__init__.py
-silx/math/test/benchmark_combo.py
-silx/math/test/histo_benchmarks.py
-silx/math/test/test_HistogramndLut_nominal.py
-silx/math/test/test_calibration.py
-silx/math/test/test_colormap.py
-silx/math/test/test_combo.py
-silx/math/test/test_histogramnd_error.py
-silx/math/test/test_histogramnd_nominal.py
-silx/math/test/test_histogramnd_vs_np.py
-silx/math/test/test_interpolate.py
-silx/math/test/test_marchingcubes.py
-silx/opencl/__init__.py
-silx/opencl/backprojection.py
-silx/opencl/common.py
-silx/opencl/convolution.py
-silx/opencl/image.py
-silx/opencl/linalg.py
-silx/opencl/medfilt.py
-silx/opencl/processing.py
-silx/opencl/projection.py
-silx/opencl/reconstruction.py
-silx/opencl/setup.py
-silx/opencl/sinofilter.py
-silx/opencl/sparse.py
-silx/opencl/statistics.py
-silx/opencl/utils.py
-silx/opencl/codec/__init__.py
-silx/opencl/codec/byte_offset.py
-silx/opencl/codec/setup.py
-silx/opencl/codec/test/__init__.py
-silx/opencl/codec/test/test_byte_offset.py
-silx/opencl/sift/__init__.py
-silx/opencl/sift/alignment.py
-silx/opencl/sift/match.py
-silx/opencl/sift/param.py
-silx/opencl/sift/plan.py
-silx/opencl/sift/setup.py
-silx/opencl/sift/sift.py
-silx/opencl/sift/utils.py
-silx/opencl/sift/test/__init__.py
-silx/opencl/sift/test/test_algebra.py
-silx/opencl/sift/test/test_align.py
-silx/opencl/sift/test/test_convol.py
-silx/opencl/sift/test/test_gaussian.py
-silx/opencl/sift/test/test_image.py
-silx/opencl/sift/test/test_image_functions.py
-silx/opencl/sift/test/test_image_setup.py
-silx/opencl/sift/test/test_keypoints.py
-silx/opencl/sift/test/test_matching.py
-silx/opencl/sift/test/test_preproc.py
-silx/opencl/sift/test/test_reductions.py
-silx/opencl/sift/test/test_transform.py
-silx/opencl/test/__init__.py
-silx/opencl/test/test_addition.py
-silx/opencl/test/test_array_utils.py
-silx/opencl/test/test_backprojection.py
-silx/opencl/test/test_convolution.py
-silx/opencl/test/test_doubleword.py
-silx/opencl/test/test_image.py
-silx/opencl/test/test_kahan.py
-silx/opencl/test/test_linalg.py
-silx/opencl/test/test_medfilt.py
-silx/opencl/test/test_projection.py
-silx/opencl/test/test_sparse.py
-silx/opencl/test/test_stats.py
-silx/resources/__init__.py
-silx/resources/gui/colormaps/cividis.npy
-silx/resources/gui/colormaps/inferno.npy
-silx/resources/gui/colormaps/magma.npy
-silx/resources/gui/colormaps/plasma.npy
-silx/resources/gui/colormaps/viridis.npy
-silx/resources/gui/icons/3d-plane-normal-x.png
-silx/resources/gui/icons/3d-plane-normal-x.svg
-silx/resources/gui/icons/3d-plane-normal-y.png
-silx/resources/gui/icons/3d-plane-normal-y.svg
-silx/resources/gui/icons/3d-plane-normal-z.png
-silx/resources/gui/icons/3d-plane-normal-z.svg
-silx/resources/gui/icons/3d-plane-pan.png
-silx/resources/gui/icons/3d-plane-pan.svg
-silx/resources/gui/icons/3d-plane.png
-silx/resources/gui/icons/3d-plane.svg
-silx/resources/gui/icons/add-range-horizontal.png
-silx/resources/gui/icons/add-range-horizontal.svg
-silx/resources/gui/icons/add-shape-arc.png
-silx/resources/gui/icons/add-shape-arc.svg
-silx/resources/gui/icons/add-shape-circle.png
-silx/resources/gui/icons/add-shape-circle.svg
-silx/resources/gui/icons/add-shape-cross.png
-silx/resources/gui/icons/add-shape-cross.svg
-silx/resources/gui/icons/add-shape-diagonal.png
-silx/resources/gui/icons/add-shape-diagonal.svg
-silx/resources/gui/icons/add-shape-ellipse.png
-silx/resources/gui/icons/add-shape-ellipse.svg
-silx/resources/gui/icons/add-shape-horizontal.png
-silx/resources/gui/icons/add-shape-horizontal.svg
-silx/resources/gui/icons/add-shape-point.png
-silx/resources/gui/icons/add-shape-point.svg
-silx/resources/gui/icons/add-shape-polygon.png
-silx/resources/gui/icons/add-shape-polygon.svg
-silx/resources/gui/icons/add-shape-rectangle.png
-silx/resources/gui/icons/add-shape-rectangle.svg
-silx/resources/gui/icons/add-shape-unknown.png
-silx/resources/gui/icons/add-shape-unknown.svg
-silx/resources/gui/icons/add-shape-vertical.png
-silx/resources/gui/icons/add-shape-vertical.svg
-silx/resources/gui/icons/add.png
-silx/resources/gui/icons/add.svg
-silx/resources/gui/icons/arrow-keys.png
-silx/resources/gui/icons/arrow-keys.svg
-silx/resources/gui/icons/axis.png
-silx/resources/gui/icons/axis.svg
-silx/resources/gui/icons/backend-opengl.png
-silx/resources/gui/icons/backend-opengl.svg
-silx/resources/gui/icons/camera.png
-silx/resources/gui/icons/camera.svg
-silx/resources/gui/icons/clipboard.png
-silx/resources/gui/icons/clipboard.svg
-silx/resources/gui/icons/close.png
-silx/resources/gui/icons/close.svg
-silx/resources/gui/icons/colorbar.png
-silx/resources/gui/icons/colorbar.svg
-silx/resources/gui/icons/colormap-histogram.png
-silx/resources/gui/icons/colormap-histogram.svg
-silx/resources/gui/icons/colormap-none.png
-silx/resources/gui/icons/colormap-none.svg
-silx/resources/gui/icons/colormap-norm-arcsinh.png
-silx/resources/gui/icons/colormap-norm-arcsinh.svg
-silx/resources/gui/icons/colormap-norm-gamma.png
-silx/resources/gui/icons/colormap-norm-gamma.svg
-silx/resources/gui/icons/colormap-norm-linear.png
-silx/resources/gui/icons/colormap-norm-linear.svg
-silx/resources/gui/icons/colormap-norm-log.png
-silx/resources/gui/icons/colormap-norm-log.svg
-silx/resources/gui/icons/colormap-norm-sqrt.png
-silx/resources/gui/icons/colormap-norm-sqrt.svg
-silx/resources/gui/icons/colormap-range.png
-silx/resources/gui/icons/colormap-range.svg
-silx/resources/gui/icons/colormap.png
-silx/resources/gui/icons/colormap.svg
-silx/resources/gui/icons/compare-align-auto.png
-silx/resources/gui/icons/compare-align-auto.svg
-silx/resources/gui/icons/compare-align-center.png
-silx/resources/gui/icons/compare-align-center.svg
-silx/resources/gui/icons/compare-align-origin.png
-silx/resources/gui/icons/compare-align-origin.svg
-silx/resources/gui/icons/compare-align-stretch.png
-silx/resources/gui/icons/compare-align-stretch.svg
-silx/resources/gui/icons/compare-keypoints.png
-silx/resources/gui/icons/compare-keypoints.svg
-silx/resources/gui/icons/compare-mode-a-minus-b.png
-silx/resources/gui/icons/compare-mode-a-minus-b.svg
-silx/resources/gui/icons/compare-mode-a.png
-silx/resources/gui/icons/compare-mode-a.svg
-silx/resources/gui/icons/compare-mode-b.png
-silx/resources/gui/icons/compare-mode-b.svg
-silx/resources/gui/icons/compare-mode-hline.png
-silx/resources/gui/icons/compare-mode-hline.svg
-silx/resources/gui/icons/compare-mode-rb-channel.png
-silx/resources/gui/icons/compare-mode-rb-channel.svg
-silx/resources/gui/icons/compare-mode-rbneg-channel.png
-silx/resources/gui/icons/compare-mode-rbneg-channel.svg
-silx/resources/gui/icons/compare-mode-vline.png
-silx/resources/gui/icons/compare-mode-vline.svg
-silx/resources/gui/icons/crop.png
-silx/resources/gui/icons/crop.svg
-silx/resources/gui/icons/crosshair.png
-silx/resources/gui/icons/crosshair.svg
-silx/resources/gui/icons/cube-back.png
-silx/resources/gui/icons/cube-back.svg
-silx/resources/gui/icons/cube-bottom.png
-silx/resources/gui/icons/cube-bottom.svg
-silx/resources/gui/icons/cube-front.png
-silx/resources/gui/icons/cube-front.svg
-silx/resources/gui/icons/cube-left.png
-silx/resources/gui/icons/cube-left.svg
-silx/resources/gui/icons/cube-right.png
-silx/resources/gui/icons/cube-right.svg
-silx/resources/gui/icons/cube-rotate.png
-silx/resources/gui/icons/cube-rotate.svg