summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPicca Frédéric-Emmanuel <picca@debian.org>2022-02-02 14:19:58 +0100
committerPicca Frédéric-Emmanuel <picca@debian.org>2022-02-02 14:19:58 +0100
commit4e774db12d5ebe7a20eded6dd434a289e27999e5 (patch)
treea9822974ba45196f1e3740995ab157d6eb214a04
parentd3194b1a9c4404ba93afac43d97172ab24c57098 (diff)
New upstream version 1.0.0+dfsg
-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--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.py397
-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.py689
-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.py451
-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.py692
-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
1441 files changed, 127646 insertions, 128285 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/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 771374c..045b9a0 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 #
########
@@ -476,7 +459,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
# ############## #
@@ -778,8 +763,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):
@@ -846,8 +830,6 @@ def get_project_configuration(dry_run):
# for io support
"h5py",
"fabio>=0.9",
- # Python 2/3 compatibility
- "six",
]
# Add Python 2.7 backports
@@ -858,8 +840,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
@@ -872,11 +852,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
@@ -910,7 +897,6 @@ def get_project_configuration(dry_run):
cmdclass = dict(
build=Build,
- build_py=build_py,
test=PyTest,
build_screenshots=BuildDocAndGenerateScreenshotCommand,
build_doc=BuildDocCommand,
@@ -940,7 +926,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
-silx/resources/gui/icons/cube-top.png
-silx/resources/gui/icons/cube-top.svg
-silx/resources/gui/icons/cube.png
-silx/resources/gui/icons/cube.svg
-silx/resources/gui/icons/description-description.png
-silx/resources/gui/icons/description-description.svg
-silx/resources/gui/icons/description-error.png
-silx/resources/gui/icons/description-error.svg
-silx/resources/gui/icons/description-name.png
-silx/resources/gui/icons/description-name.svg
-silx/resources/gui/icons/description-program.png
-silx/resources/gui/icons/description-program.svg
-silx/resources/gui/icons/description-title.png
-silx/resources/gui/icons/description-title.svg
-silx/resources/gui/icons/description-value.png
-silx/resources/gui/icons/description-value.svg
-silx/resources/gui/icons/document-open.png
-silx/resources/gui/icons/document-open.svg
-silx/resources/gui/icons/document-print.png
-silx/resources/gui/icons/document-print.svg
-silx/resources/gui/icons/document-save.png
-silx/resources/gui/icons/document-save.svg
-silx/resources/gui/icons/draw-brush.png
-silx/resources/gui/icons/draw-brush.svg
-silx/resources/gui/icons/draw-pencil.png
-silx/resources/gui/icons/draw-pencil.svg
-silx/resources/gui/icons/draw-rubber.png
-silx/resources/gui/icons/draw-rubber.svg
-silx/resources/gui/icons/edit-copy.png
-silx/resources/gui/icons/edit-copy.svg
-silx/resources/gui/icons/eye.png
-silx/resources/gui/icons/eye.svg
-silx/resources/gui/icons/first.png
-silx/resources/gui/icons/first.svg
-silx/resources/gui/icons/folder.png
-silx/resources/gui/icons/folder.svg
-silx/resources/gui/icons/image-mask.png
-silx/resources/gui/icons/image-mask.svg
-silx/resources/gui/icons/image-select-add.png
-silx/resources/gui/icons/image-select-add.svg
-silx/resources/gui/icons/image-select-box.png
-silx/resources/gui/icons/image-select-box.svg
-silx/resources/gui/icons/image-select-brush.png
-silx/resources/gui/icons/image-select-brush.svg
-silx/resources/gui/icons/image-select-erase-rubber.png
-silx/resources/gui/icons/image-select-erase-rubber.svg
-silx/resources/gui/icons/image-select-erase.png
-silx/resources/gui/icons/image-select-erase.svg
-silx/resources/gui/icons/image.png
-silx/resources/gui/icons/image.svg
-silx/resources/gui/icons/item-0dim.png
-silx/resources/gui/icons/item-0dim.svg
-silx/resources/gui/icons/item-1dim.png
-silx/resources/gui/icons/item-1dim.svg
-silx/resources/gui/icons/item-2dim.png
-silx/resources/gui/icons/item-2dim.svg
-silx/resources/gui/icons/item-3dim.png
-silx/resources/gui/icons/item-3dim.svg
-silx/resources/gui/icons/item-ndim.png
-silx/resources/gui/icons/item-ndim.svg
-silx/resources/gui/icons/item-none.png
-silx/resources/gui/icons/item-none.svg
-silx/resources/gui/icons/item-object.png
-silx/resources/gui/icons/item-object.svg
-silx/resources/gui/icons/last.png
-silx/resources/gui/icons/last.svg
-silx/resources/gui/icons/layer-nx.png
-silx/resources/gui/icons/layer-nx.svg
-silx/resources/gui/icons/mask-clear-all.png
-silx/resources/gui/icons/mask-clear-all.svg
-silx/resources/gui/icons/mask-clear.png
-silx/resources/gui/icons/mask-clear.svg
-silx/resources/gui/icons/mask-invert.png
-silx/resources/gui/icons/mask-invert.svg
-silx/resources/gui/icons/math-amplitude.png
-silx/resources/gui/icons/math-amplitude.svg
-silx/resources/gui/icons/math-average.png
-silx/resources/gui/icons/math-average.svg
-silx/resources/gui/icons/math-derive.png
-silx/resources/gui/icons/math-derive.svg
-silx/resources/gui/icons/math-energy.png
-silx/resources/gui/icons/math-energy.svg
-silx/resources/gui/icons/math-fit.png
-silx/resources/gui/icons/math-fit.svg
-silx/resources/gui/icons/math-imaginary.png
-silx/resources/gui/icons/math-imaginary.svg
-silx/resources/gui/icons/math-mean.png
-silx/resources/gui/icons/math-mean.svg
-silx/resources/gui/icons/math-normalize.png
-silx/resources/gui/icons/math-normalize.svg
-silx/resources/gui/icons/math-peak-reset.png
-silx/resources/gui/icons/math-peak-reset.svg
-silx/resources/gui/icons/math-peak-search.png
-silx/resources/gui/icons/math-peak-search.svg
-silx/resources/gui/icons/math-peak.png
-silx/resources/gui/icons/math-peak.svg
-silx/resources/gui/icons/math-phase-color-log.png
-silx/resources/gui/icons/math-phase-color-log.svg
-silx/resources/gui/icons/math-phase-color.png
-silx/resources/gui/icons/math-phase-color.svg
-silx/resources/gui/icons/math-phase.png
-silx/resources/gui/icons/math-phase.svg
-silx/resources/gui/icons/math-real.png
-silx/resources/gui/icons/math-real.svg
-silx/resources/gui/icons/math-sigma.png
-silx/resources/gui/icons/math-sigma.svg
-silx/resources/gui/icons/math-smooth.png
-silx/resources/gui/icons/math-smooth.svg
-silx/resources/gui/icons/math-square-amplitude.png
-silx/resources/gui/icons/math-square-amplitude.svg
-silx/resources/gui/icons/math-substract.png
-silx/resources/gui/icons/math-substract.svg
-silx/resources/gui/icons/math-swap-sign.png
-silx/resources/gui/icons/math-swap-sign.svg
-silx/resources/gui/icons/math-ymin-to-zero.png
-silx/resources/gui/icons/math-ymin-to-zero.svg
-silx/resources/gui/icons/median-filter.png
-silx/resources/gui/icons/median-filter.svg
-silx/resources/gui/icons/next.png
-silx/resources/gui/icons/next.svg
-silx/resources/gui/icons/normal.png
-silx/resources/gui/icons/normal.svg
-silx/resources/gui/icons/nxdata-axis-add.png
-silx/resources/gui/icons/nxdata-axis-add.svg
-silx/resources/gui/icons/nxdata-axis-remove.png
-silx/resources/gui/icons/nxdata-axis-remove.svg
-silx/resources/gui/icons/nxdata-create.png
-silx/resources/gui/icons/nxdata-create.svg
-silx/resources/gui/icons/nxdata-remove.png
-silx/resources/gui/icons/nxdata-remove.svg
-silx/resources/gui/icons/pan.png
-silx/resources/gui/icons/pan.svg
-silx/resources/gui/icons/pixel-intensities.png
-silx/resources/gui/icons/pixel-intensities.svg
-silx/resources/gui/icons/plot-grid.png
-silx/resources/gui/icons/plot-grid.svg
-silx/resources/gui/icons/plot-roi-above.png
-silx/resources/gui/icons/plot-roi-above.svg
-silx/resources/gui/icons/plot-roi-below.png
-silx/resources/gui/icons/plot-roi-below.svg
-silx/resources/gui/icons/plot-roi-between.png
-silx/resources/gui/icons/plot-roi-between.svg
-silx/resources/gui/icons/plot-roi-reset.png
-silx/resources/gui/icons/plot-roi-reset.svg
-silx/resources/gui/icons/plot-roi.png
-silx/resources/gui/icons/plot-roi.svg
-silx/resources/gui/icons/plot-symbols.png
-silx/resources/gui/icons/plot-symbols.svg
-silx/resources/gui/icons/plot-toggle-points.png
-silx/resources/gui/icons/plot-toggle-points.svg
-silx/resources/gui/icons/plot-widget.png
-silx/resources/gui/icons/plot-widget.svg
-silx/resources/gui/icons/plot-window-image.png
-silx/resources/gui/icons/plot-window-image.svg
-silx/resources/gui/icons/plot-window.png
-silx/resources/gui/icons/plot-window.svg
-silx/resources/gui/icons/plot-xauto.png
-silx/resources/gui/icons/plot-xauto.svg
-silx/resources/gui/icons/plot-xlog.png
-silx/resources/gui/icons/plot-xlog.svg
-silx/resources/gui/icons/plot-yauto.png
-silx/resources/gui/icons/plot-yauto.svg
-silx/resources/gui/icons/plot-ydown.png
-silx/resources/gui/icons/plot-ydown.svg
-silx/resources/gui/icons/plot-ylog.png
-silx/resources/gui/icons/plot-ylog.svg
-silx/resources/gui/icons/plot-yup.png
-silx/resources/gui/icons/plot-yup.svg
-silx/resources/gui/icons/pointing-hand.png
-silx/resources/gui/icons/pointing-hand.svg
-silx/resources/gui/icons/previous.png
-silx/resources/gui/icons/previous.svg
-silx/resources/gui/icons/process-working.mng
-silx/resources/gui/icons/profile-clear.png
-silx/resources/gui/icons/profile-clear.svg
-silx/resources/gui/icons/profile1D.png
-silx/resources/gui/icons/profile1D.svg
-silx/resources/gui/icons/profile2D.png
-silx/resources/gui/icons/profile2D.svg
-silx/resources/gui/icons/remove.png
-silx/resources/gui/icons/remove.svg
-silx/resources/gui/icons/rm.png
-silx/resources/gui/icons/rm.svg
-silx/resources/gui/icons/rotate-3d.png
-silx/resources/gui/icons/rotate-3d.svg
-silx/resources/gui/icons/rudder.png
-silx/resources/gui/icons/rudder.svg
-silx/resources/gui/icons/selected.png
-silx/resources/gui/icons/selected.svg
-silx/resources/gui/icons/shape-circle-solid.png
-silx/resources/gui/icons/shape-circle-solid.svg
-silx/resources/gui/icons/shape-circle.png
-silx/resources/gui/icons/shape-circle.svg
-silx/resources/gui/icons/shape-cross.png
-silx/resources/gui/icons/shape-cross.svg
-silx/resources/gui/icons/shape-diagonal-directed.png
-silx/resources/gui/icons/shape-diagonal-directed.svg
-silx/resources/gui/icons/shape-diagonal.png
-silx/resources/gui/icons/shape-diagonal.svg
-silx/resources/gui/icons/shape-ellipse-solid.png
-silx/resources/gui/icons/shape-ellipse-solid.svg
-silx/resources/gui/icons/shape-ellipse.png
-silx/resources/gui/icons/shape-ellipse.svg
-silx/resources/gui/icons/shape-horizontal.png
-silx/resources/gui/icons/shape-horizontal.svg
-silx/resources/gui/icons/shape-polygon.png
-silx/resources/gui/icons/shape-polygon.svg
-silx/resources/gui/icons/shape-rectangle.png
-silx/resources/gui/icons/shape-rectangle.svg
-silx/resources/gui/icons/shape-square.png
-silx/resources/gui/icons/shape-square.svg
-silx/resources/gui/icons/shape-vertical.png
-silx/resources/gui/icons/shape-vertical.svg
-silx/resources/gui/icons/silx.png
-silx/resources/gui/icons/silx.svg
-silx/resources/gui/icons/slice-cross.png
-silx/resources/gui/icons/slice-cross.svg
-silx/resources/gui/icons/slice-horizontal.png
-silx/resources/gui/icons/slice-horizontal.svg
-silx/resources/gui/icons/slice-vertical.png
-silx/resources/gui/icons/slice-vertical.svg
-silx/resources/gui/icons/sliders-off.png
-silx/resources/gui/icons/sliders-off.svg
-silx/resources/gui/icons/sliders-on.png
-silx/resources/gui/icons/sliders-on.svg
-silx/resources/gui/icons/spec.png
-silx/resources/gui/icons/spec.svg
-silx/resources/gui/icons/stats-active-items.png
-silx/resources/gui/icons/stats-active-items.svg
-silx/resources/gui/icons/stats-visible-data.png
-silx/resources/gui/icons/stats-visible-data.svg
-silx/resources/gui/icons/stats-whole-data.png
-silx/resources/gui/icons/stats-whole-data.svg
-silx/resources/gui/icons/stats-whole-items.png
-silx/resources/gui/icons/stats-whole-items.svg
-silx/resources/gui/icons/tree-collapse-all.png
-silx/resources/gui/icons/tree-collapse-all.svg
-silx/resources/gui/icons/tree-expand-all.png
-silx/resources/gui/icons/tree-expand-all.svg
-silx/resources/gui/icons/tree-sort.png
-silx/resources/gui/icons/tree-sort.svg
-silx/resources/gui/icons/view-1d.png
-silx/resources/gui/icons/view-1d.svg
-silx/resources/gui/icons/view-2d-stack.png
-silx/resources/gui/icons/view-2d-stack.svg
-silx/resources/gui/icons/view-2d.png
-silx/resources/gui/icons/view-2d.svg
-silx/resources/gui/icons/view-3d.png
-silx/resources/gui/icons/view-3d.svg
-silx/resources/gui/icons/view-fullscreen.png
-silx/resources/gui/icons/view-fullscreen.svg
-silx/resources/gui/icons/view-hdf5.png
-silx/resources/gui/icons/view-hdf5.svg
-silx/resources/gui/icons/view-nexus.png
-silx/resources/gui/icons/view-nexus.svg
-silx/resources/gui/icons/view-nofullscreen.png
-silx/resources/gui/icons/view-nofullscreen.svg
-silx/resources/gui/icons/view-raw.png
-silx/resources/gui/icons/view-raw.svg
-silx/resources/gui/icons/view-refresh.png
-silx/resources/gui/icons/view-refresh.svg
-silx/resources/gui/icons/view-text.png
-silx/resources/gui/icons/view-text.svg
-silx/resources/gui/icons/window-new.png
-silx/resources/gui/icons/window-new.svg
-silx/resources/gui/icons/zoom-back.png
-silx/resources/gui/icons/zoom-back.svg
-silx/resources/gui/icons/zoom-in.png
-silx/resources/gui/icons/zoom-in.svg
-silx/resources/gui/icons/zoom-original.png
-silx/resources/gui/icons/zoom-original.svg
-silx/resources/gui/icons/zoom-out.png
-silx/resources/gui/icons/zoom-out.svg
-silx/resources/gui/icons/zoom.png
-silx/resources/gui/icons/zoom.svg
-silx/resources/gui/icons/process-working/00.png
-silx/resources/gui/icons/process-working/01.png
-silx/resources/gui/icons/process-working/02.png
-silx/resources/gui/icons/process-working/03.png
-silx/resources/gui/icons/process-working/04.png
-silx/resources/gui/icons/process-working/05.png
-silx/resources/gui/icons/process-working/06.png
-silx/resources/gui/icons/process-working/07.png
-silx/resources/gui/icons/process-working/08.png
-silx/resources/gui/icons/process-working/09.png
-silx/resources/gui/icons/process-working/10.png
-silx/resources/gui/icons/process-working/11.png
-silx/resources/gui/icons/process-working/12.png
-silx/resources/gui/icons/process-working/13.png
-silx/resources/gui/icons/process-working/14.png
-silx/resources/gui/icons/process-working/15.png
-silx/resources/gui/icons/process-working/16.png
-silx/resources/gui/icons/process-working/17.png
-silx/resources/gui/icons/process-working/18.png
-silx/resources/gui/icons/process-working/19.png
-silx/resources/gui/icons/process-working/20.png
-silx/resources/gui/icons/process-working/21.png
-silx/resources/gui/icons/process-working/22.png
-silx/resources/gui/icons/process-working/23.png
-silx/resources/gui/icons/process-working/24.png
-silx/resources/gui/icons/process-working/25.png
-silx/resources/gui/icons/process-working/26.png
-silx/resources/gui/icons/process-working/27.png
-silx/resources/gui/icons/process-working/28.png
-silx/resources/gui/icons/process-working/29.png
-silx/resources/gui/icons/process-working/30.png
-silx/resources/gui/logo/silx.png
-silx/resources/gui/logo/silx.svg
-silx/resources/opencl/addition.cl
-silx/resources/opencl/array_utils.cl
-silx/resources/opencl/backproj.cl
-silx/resources/opencl/backproj_helper.cl
-silx/resources/opencl/bitonic.cl
-silx/resources/opencl/convolution.cl
-silx/resources/opencl/convolution_textures.cl
-silx/resources/opencl/doubleword.cl
-silx/resources/opencl/kahan.cl
-silx/resources/opencl/linalg.cl
-silx/resources/opencl/medfilt.cl
-silx/resources/opencl/preprocess.cl
-silx/resources/opencl/proj.cl
-silx/resources/opencl/sparse.cl
-silx/resources/opencl/statistics.cl
-silx/resources/opencl/codec/byte_offset.cl
-silx/resources/opencl/image/cast.cl
-silx/resources/opencl/image/histogram.cl
-silx/resources/opencl/image/map.cl
-silx/resources/opencl/image/max_min.cl
-silx/resources/opencl/sift/addition.cl
-silx/resources/opencl/sift/algebra.cl
-silx/resources/opencl/sift/convolution.cl
-silx/resources/opencl/sift/descriptor_cpu.cl
-silx/resources/opencl/sift/descriptor_gpu1.cl
-silx/resources/opencl/sift/descriptor_gpu2.cl
-silx/resources/opencl/sift/gaussian.cl
-silx/resources/opencl/sift/image.cl
-silx/resources/opencl/sift/interpolation.cl
-silx/resources/opencl/sift/matching_cpu.cl
-silx/resources/opencl/sift/matching_gpu.cl
-silx/resources/opencl/sift/memset.cl
-silx/resources/opencl/sift/orientation_cpu.cl
-silx/resources/opencl/sift/orientation_gpu.cl
-silx/resources/opencl/sift/preprocess.cl
-silx/resources/opencl/sift/reductions.cl
-silx/resources/opencl/sift/sift.cl
-silx/resources/opencl/sift/transform.cl
-silx/sx/__init__.py
-silx/sx/_plot.py
-silx/sx/_plot3d.py
-silx/test/__init__.py
-silx/test/test_resources.py
-silx/test/test_sx.py
-silx/test/test_version.py
-silx/test/utils.py
-silx/third_party/EdfFile.py
-silx/third_party/TiffIO.py
-silx/third_party/__init__.py
-silx/third_party/scipy_spatial.py
-silx/third_party/setup.py
-silx/third_party/_local/__init__.py
-silx/third_party/_local/scipy_spatial/__init__.py
-silx/third_party/_local/scipy_spatial/qhull.pxd
-silx/third_party/_local/scipy_spatial/qhull.pyx
-silx/third_party/_local/scipy_spatial/qhull_misc.h
-silx/third_party/_local/scipy_spatial/setlist.pxd
-silx/third_party/_local/scipy_spatial/setup.py
-silx/third_party/_local/scipy_spatial/qhull/COPYING.txt
-silx/third_party/_local/scipy_spatial/qhull/src/geom2_r.c
-silx/third_party/_local/scipy_spatial/qhull/src/geom_r.c
-silx/third_party/_local/scipy_spatial/qhull/src/geom_r.h
-silx/third_party/_local/scipy_spatial/qhull/src/global_r.c
-silx/third_party/_local/scipy_spatial/qhull/src/io_r.c
-silx/third_party/_local/scipy_spatial/qhull/src/io_r.h
-silx/third_party/_local/scipy_spatial/qhull/src/libqhull_r.c
-silx/third_party/_local/scipy_spatial/qhull/src/libqhull_r.h
-silx/third_party/_local/scipy_spatial/qhull/src/mem_r.c
-silx/third_party/_local/scipy_spatial/qhull/src/mem_r.h
-silx/third_party/_local/scipy_spatial/qhull/src/merge_r.c
-silx/third_party/_local/scipy_spatial/qhull/src/merge_r.h
-silx/third_party/_local/scipy_spatial/qhull/src/poly2_r.c
-silx/third_party/_local/scipy_spatial/qhull/src/poly_r.c
-silx/third_party/_local/scipy_spatial/qhull/src/poly_r.h
-silx/third_party/_local/scipy_spatial/qhull/src/qhull_ra.h
-silx/third_party/_local/scipy_spatial/qhull/src/qset_r.c
-silx/third_party/_local/scipy_spatial/qhull/src/qset_r.h
-silx/third_party/_local/scipy_spatial/qhull/src/random_r.c
-silx/third_party/_local/scipy_spatial/qhull/src/random_r.h
-silx/third_party/_local/scipy_spatial/qhull/src/rboxlib_r.c
-silx/third_party/_local/scipy_spatial/qhull/src/stat_r.c
-silx/third_party/_local/scipy_spatial/qhull/src/stat_r.h
-silx/third_party/_local/scipy_spatial/qhull/src/user_r.c
-silx/third_party/_local/scipy_spatial/qhull/src/user_r.h
-silx/third_party/_local/scipy_spatial/qhull/src/usermem_r.c
-silx/third_party/_local/scipy_spatial/qhull/src/userprintf_r.c
-silx/third_party/_local/scipy_spatial/qhull/src/userprintf_rbox_r.c
-silx/utils/ExternalResources.py
-silx/utils/__init__.py
-silx/utils/_have_openmp.pxd
-silx/utils/array_like.py
-silx/utils/debug.py
-silx/utils/deprecation.py
-silx/utils/enum.py
-silx/utils/exceptions.py
-silx/utils/files.py
-silx/utils/html.py
-silx/utils/launcher.py
-silx/utils/number.py
-silx/utils/property.py
-silx/utils/proxy.py
-silx/utils/retry.py
-silx/utils/setup.py
-silx/utils/testutils.py
-silx/utils/weakref.py
-silx/utils/include/silx_store_openmp.h
-silx/utils/test/__init__.py
-silx/utils/test/test_array_like.py
-silx/utils/test/test_debug.py
-silx/utils/test/test_deprecation.py
-silx/utils/test/test_enum.py
-silx/utils/test/test_external_resources.py
-silx/utils/test/test_html.py
-silx/utils/test/test_launcher.py
-silx/utils/test/test_launcher_command.py
-silx/utils/test/test_number.py
-silx/utils/test/test_proxy.py
-silx/utils/test/test_retry.py
-silx/utils/test/test_testutils.py
-silx/utils/test/test_weakref.py \ No newline at end of file
+src/silx/__init__.py
+src/silx/__main__.py
+src/silx/_config.py
+src/silx/_version.py
+src/silx/conftest.py
+src/silx/setup.py
+src/silx/app/__init__.py
+src/silx/app/convert.py
+src/silx/app/setup.py
+src/silx/app/test_.py
+src/silx/app/test/__init__.py
+src/silx/app/test/test_convert.py
+src/silx/app/view/About.py
+src/silx/app/view/ApplicationContext.py
+src/silx/app/view/CustomNxdataWidget.py
+src/silx/app/view/DataPanel.py
+src/silx/app/view/Viewer.py
+src/silx/app/view/__init__.py
+src/silx/app/view/main.py
+src/silx/app/view/setup.py
+src/silx/app/view/utils.py
+src/silx/app/view/test/__init__.py
+src/silx/app/view/test/test_launcher.py
+src/silx/app/view/test/test_view.py
+src/silx/gui/__init__.py
+src/silx/gui/colors.py
+src/silx/gui/conftest.py
+src/silx/gui/console.py
+src/silx/gui/icons.py
+src/silx/gui/printer.py
+src/silx/gui/setup.py
+src/silx/gui/_glutils/Context.py
+src/silx/gui/_glutils/FramebufferTexture.py
+src/silx/gui/_glutils/OpenGLWidget.py
+src/silx/gui/_glutils/Program.py
+src/silx/gui/_glutils/Texture.py
+src/silx/gui/_glutils/VertexBuffer.py
+src/silx/gui/_glutils/__init__.py
+src/silx/gui/_glutils/font.py
+src/silx/gui/_glutils/gl.py
+src/silx/gui/_glutils/utils.py
+src/silx/gui/data/ArrayTableModel.py
+src/silx/gui/data/ArrayTableWidget.py
+src/silx/gui/data/DataViewer.py
+src/silx/gui/data/DataViewerFrame.py
+src/silx/gui/data/DataViewerSelector.py
+src/silx/gui/data/DataViews.py
+src/silx/gui/data/Hdf5TableView.py
+src/silx/gui/data/HexaTableView.py
+src/silx/gui/data/NXdataWidgets.py
+src/silx/gui/data/NumpyAxesSelector.py
+src/silx/gui/data/RecordTableView.py
+src/silx/gui/data/TextFormatter.py
+src/silx/gui/data/_RecordPlot.py
+src/silx/gui/data/_VolumeWindow.py
+src/silx/gui/data/__init__.py
+src/silx/gui/data/setup.py
+src/silx/gui/data/test/__init__.py
+src/silx/gui/data/test/test_arraywidget.py
+src/silx/gui/data/test/test_dataviewer.py
+src/silx/gui/data/test/test_numpyaxesselector.py
+src/silx/gui/data/test/test_textformatter.py
+src/silx/gui/dialog/AbstractDataFileDialog.py
+src/silx/gui/dialog/ColormapDialog.py
+src/silx/gui/dialog/DataFileDialog.py
+src/silx/gui/dialog/DatasetDialog.py
+src/silx/gui/dialog/FileTypeComboBox.py
+src/silx/gui/dialog/GroupDialog.py
+src/silx/gui/dialog/ImageFileDialog.py
+src/silx/gui/dialog/SafeFileIconProvider.py
+src/silx/gui/dialog/SafeFileSystemModel.py
+src/silx/gui/dialog/__init__.py
+src/silx/gui/dialog/setup.py
+src/silx/gui/dialog/utils.py
+src/silx/gui/dialog/test/__init__.py
+src/silx/gui/dialog/test/test_colormapdialog.py
+src/silx/gui/dialog/test/test_datafiledialog.py
+src/silx/gui/dialog/test/test_imagefiledialog.py
+src/silx/gui/fit/BackgroundWidget.py
+src/silx/gui/fit/FitConfig.py
+src/silx/gui/fit/FitWidget.py
+src/silx/gui/fit/FitWidgets.py
+src/silx/gui/fit/Parameters.py
+src/silx/gui/fit/__init__.py
+src/silx/gui/fit/setup.py
+src/silx/gui/fit/test/__init__.py
+src/silx/gui/fit/test/testBackgroundWidget.py
+src/silx/gui/fit/test/testFitConfig.py
+src/silx/gui/fit/test/testFitWidget.py
+src/silx/gui/hdf5/Hdf5Formatter.py
+src/silx/gui/hdf5/Hdf5HeaderView.py
+src/silx/gui/hdf5/Hdf5Item.py
+src/silx/gui/hdf5/Hdf5LoadingItem.py
+src/silx/gui/hdf5/Hdf5Node.py
+src/silx/gui/hdf5/Hdf5TreeModel.py
+src/silx/gui/hdf5/Hdf5TreeView.py
+src/silx/gui/hdf5/NexusSortFilterProxyModel.py
+src/silx/gui/hdf5/__init__.py
+src/silx/gui/hdf5/_utils.py
+src/silx/gui/hdf5/setup.py
+src/silx/gui/hdf5/test/__init__.py
+src/silx/gui/hdf5/test/test_hdf5.py
+src/silx/gui/plot/AlphaSlider.py
+src/silx/gui/plot/ColorBar.py
+src/silx/gui/plot/Colormap.py
+src/silx/gui/plot/ColormapDialog.py
+src/silx/gui/plot/Colors.py
+src/silx/gui/plot/CompareImages.py
+src/silx/gui/plot/ComplexImageView.py
+src/silx/gui/plot/CurvesROIWidget.py
+src/silx/gui/plot/ImageStack.py
+src/silx/gui/plot/ImageView.py
+src/silx/gui/plot/Interaction.py
+src/silx/gui/plot/ItemsSelectionDialog.py
+src/silx/gui/plot/LegendSelector.py
+src/silx/gui/plot/LimitsHistory.py
+src/silx/gui/plot/MaskToolsWidget.py
+src/silx/gui/plot/PlotActions.py
+src/silx/gui/plot/PlotEvents.py
+src/silx/gui/plot/PlotInteraction.py
+src/silx/gui/plot/PlotToolButtons.py
+src/silx/gui/plot/PlotTools.py
+src/silx/gui/plot/PlotWidget.py
+src/silx/gui/plot/PlotWindow.py
+src/silx/gui/plot/PrintPreviewToolButton.py
+src/silx/gui/plot/Profile.py
+src/silx/gui/plot/ProfileMainWindow.py
+src/silx/gui/plot/ROIStatsWidget.py
+src/silx/gui/plot/ScatterMaskToolsWidget.py
+src/silx/gui/plot/ScatterView.py
+src/silx/gui/plot/StackView.py
+src/silx/gui/plot/StatsWidget.py
+src/silx/gui/plot/_BaseMaskToolsWidget.py
+src/silx/gui/plot/__init__.py
+src/silx/gui/plot/setup.py
+src/silx/gui/plot/_utils/__init__.py
+src/silx/gui/plot/_utils/delaunay.py
+src/silx/gui/plot/_utils/dtime_ticklayout.py
+src/silx/gui/plot/_utils/panzoom.py
+src/silx/gui/plot/_utils/setup.py
+src/silx/gui/plot/_utils/ticklayout.py
+src/silx/gui/plot/_utils/test/__init__.py
+src/silx/gui/plot/_utils/test/test_dtime_ticklayout.py
+src/silx/gui/plot/_utils/test/test_ticklayout.py
+src/silx/gui/plot/actions/PlotAction.py
+src/silx/gui/plot/actions/PlotToolAction.py
+src/silx/gui/plot/actions/__init__.py
+src/silx/gui/plot/actions/control.py
+src/silx/gui/plot/actions/fit.py
+src/silx/gui/plot/actions/histogram.py
+src/silx/gui/plot/actions/io.py
+src/silx/gui/plot/actions/medfilt.py
+src/silx/gui/plot/actions/mode.py
+src/silx/gui/plot/backends/BackendBase.py
+src/silx/gui/plot/backends/BackendMatplotlib.py
+src/silx/gui/plot/backends/BackendOpenGL.py
+src/silx/gui/plot/backends/__init__.py
+src/silx/gui/plot/backends/glutils/GLPlotCurve.py
+src/silx/gui/plot/backends/glutils/GLPlotFrame.py
+src/silx/gui/plot/backends/glutils/GLPlotImage.py
+src/silx/gui/plot/backends/glutils/GLPlotItem.py
+src/silx/gui/plot/backends/glutils/GLPlotTriangles.py
+src/silx/gui/plot/backends/glutils/GLSupport.py
+src/silx/gui/plot/backends/glutils/GLText.py
+src/silx/gui/plot/backends/glutils/GLTexture.py
+src/silx/gui/plot/backends/glutils/PlotImageFile.py
+src/silx/gui/plot/backends/glutils/__init__.py
+src/silx/gui/plot/items/__init__.py
+src/silx/gui/plot/items/_arc_roi.py
+src/silx/gui/plot/items/_pick.py
+src/silx/gui/plot/items/_roi_base.py
+src/silx/gui/plot/items/axis.py
+src/silx/gui/plot/items/complex.py
+src/silx/gui/plot/items/core.py
+src/silx/gui/plot/items/curve.py
+src/silx/gui/plot/items/histogram.py
+src/silx/gui/plot/items/image.py
+src/silx/gui/plot/items/image_aggregated.py
+src/silx/gui/plot/items/marker.py
+src/silx/gui/plot/items/roi.py
+src/silx/gui/plot/items/scatter.py
+src/silx/gui/plot/items/shape.py
+src/silx/gui/plot/matplotlib/Colormap.py
+src/silx/gui/plot/matplotlib/__init__.py
+src/silx/gui/plot/stats/__init__.py
+src/silx/gui/plot/stats/stats.py
+src/silx/gui/plot/stats/statshandler.py
+src/silx/gui/plot/test/__init__.py
+src/silx/gui/plot/test/testAlphaSlider.py
+src/silx/gui/plot/test/testColorBar.py
+src/silx/gui/plot/test/testCompareImages.py
+src/silx/gui/plot/test/testComplexImageView.py
+src/silx/gui/plot/test/testCurvesROIWidget.py
+src/silx/gui/plot/test/testImageStack.py
+src/silx/gui/plot/test/testImageView.py
+src/silx/gui/plot/test/testInteraction.py
+src/silx/gui/plot/test/testItem.py
+src/silx/gui/plot/test/testLegendSelector.py
+src/silx/gui/plot/test/testLimitConstraints.py
+src/silx/gui/plot/test/testMaskToolsWidget.py
+src/silx/gui/plot/test/testPixelIntensityHistoAction.py
+src/silx/gui/plot/test/testPlotActions.py
+src/silx/gui/plot/test/testPlotInteraction.py
+src/silx/gui/plot/test/testPlotWidget.py
+src/silx/gui/plot/test/testPlotWidgetNoBackend.py
+src/silx/gui/plot/test/testPlotWindow.py
+src/silx/gui/plot/test/testRoiStatsWidget.py
+src/silx/gui/plot/test/testSaveAction.py
+src/silx/gui/plot/test/testScatterMaskToolsWidget.py
+src/silx/gui/plot/test/testScatterView.py
+src/silx/gui/plot/test/testStackView.py
+src/silx/gui/plot/test/testStats.py
+src/silx/gui/plot/test/testUtilsAxis.py
+src/silx/gui/plot/test/utils.py
+src/silx/gui/plot/tools/CurveLegendsWidget.py
+src/silx/gui/plot/tools/LimitsToolBar.py
+src/silx/gui/plot/tools/PositionInfo.py
+src/silx/gui/plot/tools/RadarView.py
+src/silx/gui/plot/tools/__init__.py
+src/silx/gui/plot/tools/roi.py
+src/silx/gui/plot/tools/toolbars.py
+src/silx/gui/plot/tools/profile/ScatterProfileToolBar.py
+src/silx/gui/plot/tools/profile/__init__.py
+src/silx/gui/plot/tools/profile/core.py
+src/silx/gui/plot/tools/profile/editors.py
+src/silx/gui/plot/tools/profile/manager.py
+src/silx/gui/plot/tools/profile/rois.py
+src/silx/gui/plot/tools/profile/toolbar.py
+src/silx/gui/plot/tools/test/__init__.py
+src/silx/gui/plot/tools/test/testCurveLegendsWidget.py
+src/silx/gui/plot/tools/test/testProfile.py
+src/silx/gui/plot/tools/test/testROI.py
+src/silx/gui/plot/tools/test/testScatterProfileToolBar.py
+src/silx/gui/plot/tools/test/testTools.py
+src/silx/gui/plot/utils/__init__.py
+src/silx/gui/plot/utils/axis.py
+src/silx/gui/plot/utils/intersections.py
+src/silx/gui/plot3d/ParamTreeView.py
+src/silx/gui/plot3d/Plot3DWidget.py
+src/silx/gui/plot3d/Plot3DWindow.py
+src/silx/gui/plot3d/SFViewParamTree.py
+src/silx/gui/plot3d/ScalarFieldView.py
+src/silx/gui/plot3d/SceneWidget.py
+src/silx/gui/plot3d/SceneWindow.py
+src/silx/gui/plot3d/__init__.py
+src/silx/gui/plot3d/conftest.py
+src/silx/gui/plot3d/setup.py
+src/silx/gui/plot3d/_model/__init__.py
+src/silx/gui/plot3d/_model/core.py
+src/silx/gui/plot3d/_model/items.py
+src/silx/gui/plot3d/_model/model.py
+src/silx/gui/plot3d/actions/Plot3DAction.py
+src/silx/gui/plot3d/actions/__init__.py
+src/silx/gui/plot3d/actions/io.py
+src/silx/gui/plot3d/actions/mode.py
+src/silx/gui/plot3d/actions/viewpoint.py
+src/silx/gui/plot3d/items/__init__.py
+src/silx/gui/plot3d/items/_pick.py
+src/silx/gui/plot3d/items/clipplane.py
+src/silx/gui/plot3d/items/core.py
+src/silx/gui/plot3d/items/image.py
+src/silx/gui/plot3d/items/mesh.py
+src/silx/gui/plot3d/items/mixins.py
+src/silx/gui/plot3d/items/scatter.py
+src/silx/gui/plot3d/items/volume.py
+src/silx/gui/plot3d/scene/__init__.py
+src/silx/gui/plot3d/scene/axes.py
+src/silx/gui/plot3d/scene/camera.py
+src/silx/gui/plot3d/scene/core.py
+src/silx/gui/plot3d/scene/cutplane.py
+src/silx/gui/plot3d/scene/event.py
+src/silx/gui/plot3d/scene/function.py
+src/silx/gui/plot3d/scene/interaction.py
+src/silx/gui/plot3d/scene/primitives.py
+src/silx/gui/plot3d/scene/text.py
+src/silx/gui/plot3d/scene/transform.py
+src/silx/gui/plot3d/scene/utils.py
+src/silx/gui/plot3d/scene/viewport.py
+src/silx/gui/plot3d/scene/window.py
+src/silx/gui/plot3d/scene/test/__init__.py
+src/silx/gui/plot3d/scene/test/test_transform.py
+src/silx/gui/plot3d/scene/test/test_utils.py
+src/silx/gui/plot3d/test/__init__.py
+src/silx/gui/plot3d/test/testGL.py
+src/silx/gui/plot3d/test/testScalarFieldView.py
+src/silx/gui/plot3d/test/testSceneWidget.py
+src/silx/gui/plot3d/test/testSceneWidgetPicking.py
+src/silx/gui/plot3d/test/testSceneWindow.py
+src/silx/gui/plot3d/test/testStatsWidget.py
+src/silx/gui/plot3d/tools/GroupPropertiesWidget.py
+src/silx/gui/plot3d/tools/PositionInfoWidget.py
+src/silx/gui/plot3d/tools/ViewpointTools.py
+src/silx/gui/plot3d/tools/__init__.py
+src/silx/gui/plot3d/tools/toolbars.py
+src/silx/gui/plot3d/tools/test/__init__.py
+src/silx/gui/plot3d/tools/test/testPositionInfoWidget.py
+src/silx/gui/plot3d/utils/__init__.py
+src/silx/gui/plot3d/utils/mng.py
+src/silx/gui/qt/__init__.py
+src/silx/gui/qt/_pyside_dynamic.py
+src/silx/gui/qt/_qt.py
+src/silx/gui/qt/_utils.py
+src/silx/gui/qt/inspect.py
+src/silx/gui/test/__init__.py
+src/silx/gui/test/test_colors.py
+src/silx/gui/test/test_console.py
+src/silx/gui/test/test_icons.py
+src/silx/gui/test/test_qt.py
+src/silx/gui/test/utils.py
+src/silx/gui/utils/__init__.py
+src/silx/gui/utils/concurrent.py
+src/silx/gui/utils/image.py
+src/silx/gui/utils/matplotlib.py
+src/silx/gui/utils/projecturl.py
+src/silx/gui/utils/qtutils.py
+src/silx/gui/utils/signal.py
+src/silx/gui/utils/testutils.py
+src/silx/gui/utils/glutils/__init__.py
+src/silx/gui/utils/test/__init__.py
+src/silx/gui/utils/test/test.py
+src/silx/gui/utils/test/test_async.py
+src/silx/gui/utils/test/test_glutils.py
+src/silx/gui/utils/test/test_image.py
+src/silx/gui/utils/test/test_qtutils.py
+src/silx/gui/utils/test/test_testutils.py
+src/silx/gui/widgets/BoxLayoutDockWidget.py
+src/silx/gui/widgets/ColormapNameComboBox.py
+src/silx/gui/widgets/ElidedLabel.py
+src/silx/gui/widgets/FloatEdit.py
+src/silx/gui/widgets/FlowLayout.py
+src/silx/gui/widgets/FrameBrowser.py
+src/silx/gui/widgets/HierarchicalTableView.py
+src/silx/gui/widgets/LegendIconWidget.py
+src/silx/gui/widgets/MedianFilterDialog.py
+src/silx/gui/widgets/MultiModeAction.py
+src/silx/gui/widgets/PeriodicTable.py
+src/silx/gui/widgets/PrintGeometryDialog.py
+src/silx/gui/widgets/PrintPreview.py
+src/silx/gui/widgets/RangeSlider.py
+src/silx/gui/widgets/TableWidget.py
+src/silx/gui/widgets/ThreadPoolPushButton.py
+src/silx/gui/widgets/UrlSelectionTable.py
+src/silx/gui/widgets/WaitingPushButton.py
+src/silx/gui/widgets/__init__.py
+src/silx/gui/widgets/setup.py
+src/silx/gui/widgets/test/__init__.py
+src/silx/gui/widgets/test/test_boxlayoutdockwidget.py
+src/silx/gui/widgets/test/test_elidedlabel.py
+src/silx/gui/widgets/test/test_flowlayout.py
+src/silx/gui/widgets/test/test_framebrowser.py
+src/silx/gui/widgets/test/test_hierarchicaltableview.py
+src/silx/gui/widgets/test/test_legendiconwidget.py
+src/silx/gui/widgets/test/test_periodictable.py
+src/silx/gui/widgets/test/test_printpreview.py
+src/silx/gui/widgets/test/test_rangeslider.py
+src/silx/gui/widgets/test/test_tablewidget.py
+src/silx/gui/widgets/test/test_threadpoolpushbutton.py
+src/silx/image/__init__.py
+src/silx/image/_boundingbox.py
+src/silx/image/backprojection.py
+src/silx/image/bilinear.pyx
+src/silx/image/medianfilter.py
+src/silx/image/phantomgenerator.py
+src/silx/image/projection.py
+src/silx/image/reconstruction.py
+src/silx/image/setup.py
+src/silx/image/shapes.pyx
+src/silx/image/sift.py
+src/silx/image/tomography.py
+src/silx/image/utils.py
+src/silx/image/marchingsquares/__init__.py
+src/silx/image/marchingsquares/_mergeimpl.pyx
+src/silx/image/marchingsquares/_skimage.py
+src/silx/image/marchingsquares/setup.py
+src/silx/image/marchingsquares/include/patterns.h
+src/silx/image/marchingsquares/test/__init__.py
+src/silx/image/marchingsquares/test/test_funcapi.py
+src/silx/image/marchingsquares/test/test_mergeimpl.py
+src/silx/image/test/__init__.py
+src/silx/image/test/test_bb.py
+src/silx/image/test/test_bilinear.py
+src/silx/image/test/test_medianfilter.py
+src/silx/image/test/test_shapes.py
+src/silx/image/test/test_tomography.py
+src/silx/io/__init__.py
+src/silx/io/commonh5.py
+src/silx/io/configdict.py
+src/silx/io/convert.py
+src/silx/io/dictdump.py
+src/silx/io/fabioh5.py
+src/silx/io/fioh5.py
+src/silx/io/h5py_utils.py
+src/silx/io/octaveh5.py
+src/silx/io/rawh5.py
+src/silx/io/setup.py
+src/silx/io/specfile.pyx
+src/silx/io/specfile_wrapper.pxd
+src/silx/io/specfilewrapper.py
+src/silx/io/spech5.py
+src/silx/io/spectoh5.py
+src/silx/io/url.py
+src/silx/io/utils.py
+src/silx/io/nxdata/__init__.py
+src/silx/io/nxdata/_utils.py
+src/silx/io/nxdata/parse.py
+src/silx/io/nxdata/write.py
+src/silx/io/specfile/include/Lists.h
+src/silx/io/specfile/include/SpecFile.h
+src/silx/io/specfile/include/SpecFileCython.h
+src/silx/io/specfile/include/SpecFileP.h
+src/silx/io/specfile/include/locale_management.h
+src/silx/io/specfile/src/locale_management.c
+src/silx/io/specfile/src/sfdata.c
+src/silx/io/specfile/src/sfheader.c
+src/silx/io/specfile/src/sfindex.c
+src/silx/io/specfile/src/sfinit.c
+src/silx/io/specfile/src/sflabel.c
+src/silx/io/specfile/src/sflists.c
+src/silx/io/specfile/src/sfmca.c
+src/silx/io/specfile/src/sftools.c
+src/silx/io/specfile/src/sfwrite.c
+src/silx/io/test/__init__.py
+src/silx/io/test/test_commonh5.py
+src/silx/io/test/test_dictdump.py
+src/silx/io/test/test_fabioh5.py
+src/silx/io/test/test_fioh5.py
+src/silx/io/test/test_h5py_utils.py
+src/silx/io/test/test_nxdata.py
+src/silx/io/test/test_octaveh5.py
+src/silx/io/test/test_rawh5.py
+src/silx/io/test/test_specfile.py
+src/silx/io/test/test_specfilewrapper.py
+src/silx/io/test/test_spech5.py
+src/silx/io/test/test_spectoh5.py
+src/silx/io/test/test_url.py
+src/silx/io/test/test_utils.py
+src/silx/io/test/test_write_to_h5.py
+src/silx/math/__init__.py
+src/silx/math/_colormap.pyx
+src/silx/math/calibration.py
+src/silx/math/chistogramnd.pyx
+src/silx/math/chistogramnd_lut.pyx
+src/silx/math/colormap.py
+src/silx/math/combo.pyx
+src/silx/math/histogram.py
+src/silx/math/histogramnd_c.pxd
+src/silx/math/interpolate.pyx
+src/silx/math/marchingcubes.pyx
+src/silx/math/math_compatibility.pxd
+src/silx/math/mc.pxd
+src/silx/math/setup.py
+src/silx/math/fft/__init__.py
+src/silx/math/fft/basefft.py
+src/silx/math/fft/clfft.py
+src/silx/math/fft/cufft.py
+src/silx/math/fft/fft.py
+src/silx/math/fft/fftw.py
+src/silx/math/fft/npfft.py
+src/silx/math/fft/setup.py
+src/silx/math/fft/test/__init__.py
+src/silx/math/fft/test/test_fft.py
+src/silx/math/fit/__init__.py
+src/silx/math/fit/bgtheories.py
+src/silx/math/fit/filters.pyx
+src/silx/math/fit/filters_wrapper.pxd
+src/silx/math/fit/fitmanager.py
+src/silx/math/fit/fittheories.py
+src/silx/math/fit/fittheory.py
+src/silx/math/fit/functions.pyx
+src/silx/math/fit/functions_wrapper.pxd
+src/silx/math/fit/leastsq.py
+src/silx/math/fit/peaks.pyx
+src/silx/math/fit/peaks_wrapper.pxd
+src/silx/math/fit/setup.py
+src/silx/math/fit/filters/include/filters.h
+src/silx/math/fit/filters/src/smoothnd.c
+src/silx/math/fit/filters/src/snip1d.c
+src/silx/math/fit/filters/src/snip2d.c
+src/silx/math/fit/filters/src/snip3d.c
+src/silx/math/fit/filters/src/strip.c
+src/silx/math/fit/functions/include/functions.h
+src/silx/math/fit/functions/src/funs.c
+src/silx/math/fit/peaks/include/peaks.h
+src/silx/math/fit/peaks/src/peaks.c
+src/silx/math/fit/test/__init__.py
+src/silx/math/fit/test/test_bgtheories.py
+src/silx/math/fit/test/test_filters.py
+src/silx/math/fit/test/test_fit.py
+src/silx/math/fit/test/test_fitmanager.py
+src/silx/math/fit/test/test_functions.py
+src/silx/math/fit/test/test_peaks.py
+src/silx/math/histogramnd/include/histogramnd_c.h
+src/silx/math/histogramnd/include/templates.h
+src/silx/math/histogramnd/include/msvc/stdint.h
+src/silx/math/histogramnd/src/histogramnd_c.c
+src/silx/math/histogramnd/src/histogramnd_template.c
+src/silx/math/include/math_compatibility.h
+src/silx/math/marchingcubes/mc.hpp
+src/silx/math/marchingcubes/mc_lut.cpp
+src/silx/math/medianfilter/__init__.py
+src/silx/math/medianfilter/median_filter.pxd
+src/silx/math/medianfilter/medianfilter.pyx
+src/silx/math/medianfilter/setup.py
+src/silx/math/medianfilter/include/median_filter.hpp
+src/silx/math/medianfilter/test/__init__.py
+src/silx/math/medianfilter/test/benchmark.py
+src/silx/math/medianfilter/test/test_medianfilter.py
+src/silx/math/test/__init__.py
+src/silx/math/test/benchmark_combo.py
+src/silx/math/test/histo_benchmarks.py
+src/silx/math/test/test_HistogramndLut_nominal.py
+src/silx/math/test/test_calibration.py
+src/silx/math/test/test_colormap.py
+src/silx/math/test/test_combo.py
+src/silx/math/test/test_histogramnd_error.py
+src/silx/math/test/test_histogramnd_nominal.py
+src/silx/math/test/test_histogramnd_vs_np.py
+src/silx/math/test/test_interpolate.py
+src/silx/math/test/test_marchingcubes.py
+src/silx/opencl/__init__.py
+src/silx/opencl/backprojection.py
+src/silx/opencl/common.py
+src/silx/opencl/conftest.py
+src/silx/opencl/convolution.py
+src/silx/opencl/image.py
+src/silx/opencl/linalg.py
+src/silx/opencl/medfilt.py
+src/silx/opencl/processing.py
+src/silx/opencl/projection.py
+src/silx/opencl/reconstruction.py
+src/silx/opencl/setup.py
+src/silx/opencl/sinofilter.py
+src/silx/opencl/sparse.py
+src/silx/opencl/statistics.py
+src/silx/opencl/utils.py
+src/silx/opencl/codec/__init__.py
+src/silx/opencl/codec/byte_offset.py
+src/silx/opencl/codec/setup.py
+src/silx/opencl/codec/test/__init__.py
+src/silx/opencl/codec/test/test_byte_offset.py
+src/silx/opencl/sift/__init__.py
+src/silx/opencl/sift/alignment.py
+src/silx/opencl/sift/match.py
+src/silx/opencl/sift/param.py
+src/silx/opencl/sift/plan.py
+src/silx/opencl/sift/setup.py
+src/silx/opencl/sift/sift.py
+src/silx/opencl/sift/utils.py
+src/silx/opencl/sift/test/__init__.py
+src/silx/opencl/sift/test/test_algebra.py
+src/silx/opencl/sift/test/test_align.py
+src/silx/opencl/sift/test/test_convol.py
+src/silx/opencl/sift/test/test_gaussian.py
+src/silx/opencl/sift/test/test_image.py
+src/silx/opencl/sift/test/test_image_functions.py
+src/silx/opencl/sift/test/test_image_setup.py
+src/silx/opencl/sift/test/test_keypoints.py
+src/silx/opencl/sift/test/test_matching.py
+src/silx/opencl/sift/test/test_preproc.py
+src/silx/opencl/sift/test/test_reductions.py
+src/silx/opencl/sift/test/test_transform.py
+src/silx/opencl/test/__init__.py
+src/silx/opencl/test/test_addition.py
+src/silx/opencl/test/test_array_utils.py
+src/silx/opencl/test/test_backprojection.py
+src/silx/opencl/test/test_convolution.py
+src/silx/opencl/test/test_doubleword.py
+src/silx/opencl/test/test_image.py
+src/silx/opencl/test/test_kahan.py
+src/silx/opencl/test/test_linalg.py
+src/silx/opencl/test/test_medfilt.py
+src/silx/opencl/test/test_projection.py
+src/silx/opencl/test/test_sparse.py
+src/silx/opencl/test/test_stats.py
+src/silx/resources/__init__.py
+src/silx/resources/gui/colormaps/cividis.npy
+src/silx/resources/gui/colormaps/inferno.npy
+src/silx/resources/gui/colormaps/magma.npy
+src/silx/resources/gui/colormaps/plasma.npy
+src/silx/resources/gui/colormaps/viridis.npy
+src/silx/resources/gui/icons/3d-plane-normal-x.png
+src/silx/resources/gui/icons/3d-plane-normal-x.svg
+src/silx/resources/gui/icons/3d-plane-normal-y.png
+src/silx/resources/gui/icons/3d-plane-normal-y.svg
+src/silx/resources/gui/icons/3d-plane-normal-z.png
+src/silx/resources/gui/icons/3d-plane-normal-z.svg
+src/silx/resources/gui/icons/3d-plane-pan.png
+src/silx/resources/gui/icons/3d-plane-pan.svg
+src/silx/resources/gui/icons/3d-plane.png
+src/silx/resources/gui/icons/3d-plane.svg
+src/silx/resources/gui/icons/add-range-horizontal.png
+src/silx/resources/gui/icons/add-range-horizontal.svg
+src/silx/resources/gui/icons/add-shape-arc.png
+src/silx/resources/gui/icons/add-shape-arc.svg
+src/silx/resources/gui/icons/add-shape-circle.png
+src/silx/resources/gui/icons/add-shape-circle.svg
+src/silx/resources/gui/icons/add-shape-cross.png
+src/silx/resources/gui/icons/add-shape-cross.svg
+src/silx/resources/gui/icons/add-shape-diagonal.png
+src/silx/resources/gui/icons/add-shape-diagonal.svg
+src/silx/resources/gui/icons/add-shape-ellipse.png
+src/silx/resources/gui/icons/add-shape-ellipse.svg
+src/silx/resources/gui/icons/add-shape-horizontal.png
+src/silx/resources/gui/icons/add-shape-horizontal.svg
+src/silx/resources/gui/icons/add-shape-point.png
+src/silx/resources/gui/icons/add-shape-point.svg
+src/silx/resources/gui/icons/add-shape-polygon.png
+src/silx/resources/gui/icons/add-shape-polygon.svg
+src/silx/resources/gui/icons/add-shape-rectangle.png
+src/silx/resources/gui/icons/add-shape-rectangle.svg
+src/silx/resources/gui/icons/add-shape-unknown.png
+src/silx/resources/gui/icons/add-shape-unknown.svg
+src/silx/resources/gui/icons/add-shape-vertical.png
+src/silx/resources/gui/icons/add-shape-vertical.svg
+src/silx/resources/gui/icons/add.png
+src/silx/resources/gui/icons/add.svg
+src/silx/resources/gui/icons/aggregation-mode.png
+src/silx/resources/gui/icons/aggregation-mode.svg
+src/silx/resources/gui/icons/arrow-keys.png
+src/silx/resources/gui/icons/arrow-keys.svg
+src/silx/resources/gui/icons/axis.png
+src/silx/resources/gui/icons/axis.svg
+src/silx/resources/gui/icons/backend-opengl.png
+src/silx/resources/gui/icons/backend-opengl.svg
+src/silx/resources/gui/icons/camera.png
+src/silx/resources/gui/icons/camera.svg
+src/silx/resources/gui/icons/clipboard.png
+src/silx/resources/gui/icons/clipboard.svg
+src/silx/resources/gui/icons/close.png
+src/silx/resources/gui/icons/close.svg
+src/silx/resources/gui/icons/colorbar.png
+src/silx/resources/gui/icons/colorbar.svg
+src/silx/resources/gui/icons/colormap-histogram.png
+src/silx/resources/gui/icons/colormap-histogram.svg
+src/silx/resources/gui/icons/colormap-none.png
+src/silx/resources/gui/icons/colormap-none.svg
+src/silx/resources/gui/icons/colormap-norm-arcsinh.png
+src/silx/resources/gui/icons/colormap-norm-arcsinh.svg
+src/silx/resources/gui/icons/colormap-norm-gamma.png
+src/silx/resources/gui/icons/colormap-norm-gamma.svg
+src/silx/resources/gui/icons/colormap-norm-linear.png
+src/silx/resources/gui/icons/colormap-norm-linear.svg
+src/silx/resources/gui/icons/colormap-norm-log.png
+src/silx/resources/gui/icons/colormap-norm-log.svg
+src/silx/resources/gui/icons/colormap-norm-sqrt.png
+src/silx/resources/gui/icons/colormap-norm-sqrt.svg
+src/silx/resources/gui/icons/colormap-range.png
+src/silx/resources/gui/icons/colormap-range.svg
+src/silx/resources/gui/icons/colormap.png
+src/silx/resources/gui/icons/colormap.svg
+src/silx/resources/gui/icons/compare-align-auto.png
+src/silx/resources/gui/icons/compare-align-auto.svg
+src/silx/resources/gui/icons/compare-align-center.png
+src/silx/resources/gui/icons/compare-align-center.svg
+src/silx/resources/gui/icons/compare-align-origin.png
+src/silx/resources/gui/icons/compare-align-origin.svg
+src/silx/resources/gui/icons/compare-align-stretch.png
+src/silx/resources/gui/icons/compare-align-stretch.svg
+src/silx/resources/gui/icons/compare-keypoints.png
+src/silx/resources/gui/icons/compare-keypoints.svg
+src/silx/resources/gui/icons/compare-mode-a-minus-b.png
+src/silx/resources/gui/icons/compare-mode-a-minus-b.svg
+src/silx/resources/gui/icons/compare-mode-a.png
+src/silx/resources/gui/icons/compare-mode-a.svg
+src/silx/resources/gui/icons/compare-mode-b.png
+src/silx/resources/gui/icons/compare-mode-b.svg
+src/silx/resources/gui/icons/compare-mode-hline.png
+src/silx/resources/gui/icons/compare-mode-hline.svg
+src/silx/resources/gui/icons/compare-mode-rb-channel.png
+src/silx/resources/gui/icons/compare-mode-rb-channel.svg
+src/silx/resources/gui/icons/compare-mode-rbneg-channel.png
+src/silx/resources/gui/icons/compare-mode-rbneg-channel.svg
+src/silx/resources/gui/icons/compare-mode-vline.png
+src/silx/resources/gui/icons/compare-mode-vline.svg
+src/silx/resources/gui/icons/crop.png
+src/silx/resources/gui/icons/crop.svg
+src/silx/resources/gui/icons/crosshair.png
+src/silx/resources/gui/icons/crosshair.svg
+src/silx/resources/gui/icons/cube-back.png
+src/silx/resources/gui/icons/cube-back.svg
+src/silx/resources/gui/icons/cube-bottom.png
+src/silx/resources/gui/icons/cube-bottom.svg
+src/silx/resources/gui/icons/cube-front.png
+src/silx/resources/gui/icons/cube-front.svg
+src/silx/resources/gui/icons/cube-left.png
+src/silx/resources/gui/icons/cube-left.svg
+src/silx/resources/gui/icons/cube-right.png
+src/silx/resources/gui/icons/cube-right.svg
+src/silx/resources/gui/icons/cube-rotate.png
+src/silx/resources/gui/icons/cube-rotate.svg
+src/silx/resources/gui/icons/cube-top.png
+src/silx/resources/gui/icons/cube-top.svg
+src/silx/resources/gui/icons/cube.png
+src/silx/resources/gui/icons/cube.svg
+src/silx/resources/gui/icons/description-description.png
+src/silx/resources/gui/icons/description-description.svg
+src/silx/resources/gui/icons/description-error.png
+src/silx/resources/gui/icons/description-error.svg
+src/silx/resources/gui/icons/description-name.png
+src/silx/resources/gui/icons/description-name.svg
+src/silx/resources/gui/icons/description-program.png
+src/silx/resources/gui/icons/description-program.svg
+src/silx/resources/gui/icons/description-title.png
+src/silx/resources/gui/icons/description-title.svg
+src/silx/resources/gui/icons/description-value.png
+src/silx/resources/gui/icons/description-value.svg
+src/silx/resources/gui/icons/document-open.png
+src/silx/resources/gui/icons/document-open.svg
+src/silx/resources/gui/icons/document-print.png
+src/silx/resources/gui/icons/document-print.svg
+src/silx/resources/gui/icons/document-save.png
+src/silx/resources/gui/icons/document-save.svg
+src/silx/resources/gui/icons/draw-brush.png
+src/silx/resources/gui/icons/draw-brush.svg
+src/silx/resources/gui/icons/draw-pencil.png
+src/silx/resources/gui/icons/draw-pencil.svg
+src/silx/resources/gui/icons/draw-rubber.png
+src/silx/resources/gui/icons/draw-rubber.svg
+src/silx/resources/gui/icons/edit-copy.png
+src/silx/resources/gui/icons/edit-copy.svg
+src/silx/resources/gui/icons/eye.png
+src/silx/resources/gui/icons/eye.svg
+src/silx/resources/gui/icons/first.png
+src/silx/resources/gui/icons/first.svg
+src/silx/resources/gui/icons/folder.png
+src/silx/resources/gui/icons/folder.svg
+src/silx/resources/gui/icons/image-mask.png
+src/silx/resources/gui/icons/image-mask.svg
+src/silx/resources/gui/icons/image-select-add.png
+src/silx/resources/gui/icons/image-select-add.svg
+src/silx/resources/gui/icons/image-select-box.png
+src/silx/resources/gui/icons/image-select-box.svg
+src/silx/resources/gui/icons/image-select-brush.png
+src/silx/resources/gui/icons/image-select-brush.svg
+src/silx/resources/gui/icons/image-select-erase-rubber.png
+src/silx/resources/gui/icons/image-select-erase-rubber.svg
+src/silx/resources/gui/icons/image-select-erase.png
+src/silx/resources/gui/icons/image-select-erase.svg
+src/silx/resources/gui/icons/image.png
+src/silx/resources/gui/icons/image.svg
+src/silx/resources/gui/icons/item-0dim.png
+src/silx/resources/gui/icons/item-0dim.svg
+src/silx/resources/gui/icons/item-1dim.png
+src/silx/resources/gui/icons/item-1dim.svg
+src/silx/resources/gui/icons/item-2dim.png
+src/silx/resources/gui/icons/item-2dim.svg
+src/silx/resources/gui/icons/item-3dim.png
+src/silx/resources/gui/icons/item-3dim.svg
+src/silx/resources/gui/icons/item-ndim.png
+src/silx/resources/gui/icons/item-ndim.svg
+src/silx/resources/gui/icons/item-none.png
+src/silx/resources/gui/icons/item-none.svg
+src/silx/resources/gui/icons/item-object.png
+src/silx/resources/gui/icons/item-object.svg
+src/silx/resources/gui/icons/last.png
+src/silx/resources/gui/icons/last.svg
+src/silx/resources/gui/icons/layer-nx.png
+src/silx/resources/gui/icons/layer-nx.svg
+src/silx/resources/gui/icons/mask-clear-all.png
+src/silx/resources/gui/icons/mask-clear-all.svg
+src/silx/resources/gui/icons/mask-clear.png
+src/silx/resources/gui/icons/mask-clear.svg
+src/silx/resources/gui/icons/mask-invert.png
+src/silx/resources/gui/icons/mask-invert.svg
+src/silx/resources/gui/icons/math-amplitude.png
+src/silx/resources/gui/icons/math-amplitude.svg
+src/silx/resources/gui/icons/math-average.png
+src/silx/resources/gui/icons/math-average.svg
+src/silx/resources/gui/icons/math-derive.png
+src/silx/resources/gui/icons/math-derive.svg
+src/silx/resources/gui/icons/math-energy.png
+src/silx/resources/gui/icons/math-energy.svg
+src/silx/resources/gui/icons/math-fit.png
+src/silx/resources/gui/icons/math-fit.svg
+src/silx/resources/gui/icons/math-imaginary.png
+src/silx/resources/gui/icons/math-imaginary.svg
+src/silx/resources/gui/icons/math-mean.png
+src/silx/resources/gui/icons/math-mean.svg
+src/silx/resources/gui/icons/math-normalize.png
+src/silx/resources/gui/icons/math-normalize.svg
+src/silx/resources/gui/icons/math-peak-reset.png
+src/silx/resources/gui/icons/math-peak-reset.svg
+src/silx/resources/gui/icons/math-peak-search.png
+src/silx/resources/gui/icons/math-peak-search.svg
+src/silx/resources/gui/icons/math-peak.png
+src/silx/resources/gui/icons/math-peak.svg
+src/silx/resources/gui/icons/math-phase-color-log.png
+src/silx/resources/gui/icons/math-phase-color-log.svg
+src/silx/resources/gui/icons/math-phase-color.png
+src/silx/resources/gui/icons/math-phase-color.svg
+src/silx/resources/gui/icons/math-phase.png
+src/silx/resources/gui/icons/math-phase.svg
+src/silx/resources/gui/icons/math-real.png
+src/silx/resources/gui/icons/math-real.svg
+src/silx/resources/gui/icons/math-sigma.png
+src/silx/resources/gui/icons/math-sigma.svg
+src/silx/resources/gui/icons/math-smooth.png
+src/silx/resources/gui/icons/math-smooth.svg
+src/silx/resources/gui/icons/math-square-amplitude.png
+src/silx/resources/gui/icons/math-square-amplitude.svg
+src/silx/resources/gui/icons/math-substract.png
+src/silx/resources/gui/icons/math-substract.svg
+src/silx/resources/gui/icons/math-swap-sign.png
+src/silx/resources/gui/icons/math-swap-sign.svg
+src/silx/resources/gui/icons/math-ymin-to-zero.png
+src/silx/resources/gui/icons/math-ymin-to-zero.svg
+src/silx/resources/gui/icons/median-filter.png
+src/silx/resources/gui/icons/median-filter.svg
+src/silx/resources/gui/icons/next.png
+src/silx/resources/gui/icons/next.svg
+src/silx/resources/gui/icons/normal.png
+src/silx/resources/gui/icons/normal.svg
+src/silx/resources/gui/icons/nxdata-axis-add.png
+src/silx/resources/gui/icons/nxdata-axis-add.svg
+src/silx/resources/gui/icons/nxdata-axis-remove.png
+src/silx/resources/gui/icons/nxdata-axis-remove.svg
+src/silx/resources/gui/icons/nxdata-create.png
+src/silx/resources/gui/icons/nxdata-create.svg
+src/silx/resources/gui/icons/nxdata-remove.png
+src/silx/resources/gui/icons/nxdata-remove.svg
+src/silx/resources/gui/icons/pan.png
+src/silx/resources/gui/icons/pan.svg
+src/silx/resources/gui/icons/pixel-intensities.png
+src/silx/resources/gui/icons/pixel-intensities.svg
+src/silx/resources/gui/icons/plot-grid.png
+src/silx/resources/gui/icons/plot-grid.svg
+src/silx/resources/gui/icons/plot-roi-above.png
+src/silx/resources/gui/icons/plot-roi-above.svg
+src/silx/resources/gui/icons/plot-roi-below.png
+src/silx/resources/gui/icons/plot-roi-below.svg
+src/silx/resources/gui/icons/plot-roi-between.png
+src/silx/resources/gui/icons/plot-roi-between.svg
+src/silx/resources/gui/icons/plot-roi-reset.png
+src/silx/resources/gui/icons/plot-roi-reset.svg
+src/silx/resources/gui/icons/plot-roi.png
+src/silx/resources/gui/icons/plot-roi.svg
+src/silx/resources/gui/icons/plot-symbols.png
+src/silx/resources/gui/icons/plot-symbols.svg
+src/silx/resources/gui/icons/plot-toggle-points.png
+src/silx/resources/gui/icons/plot-toggle-points.svg
+src/silx/resources/gui/icons/plot-widget.png
+src/silx/resources/gui/icons/plot-widget.svg
+src/silx/resources/gui/icons/plot-window-image.png
+src/silx/resources/gui/icons/plot-window-image.svg
+src/silx/resources/gui/icons/plot-window.png
+src/silx/resources/gui/icons/plot-window.svg
+src/silx/resources/gui/icons/plot-xauto.png
+src/silx/resources/gui/icons/plot-xauto.svg
+src/silx/resources/gui/icons/plot-xlog.png
+src/silx/resources/gui/icons/plot-xlog.svg
+src/silx/resources/gui/icons/plot-yauto.png
+src/silx/resources/gui/icons/plot-yauto.svg
+src/silx/resources/gui/icons/plot-ydown.png
+src/silx/resources/gui/icons/plot-ydown.svg
+src/silx/resources/gui/icons/plot-ylog.png
+src/silx/resources/gui/icons/plot-ylog.svg
+src/silx/resources/gui/icons/plot-yup.png
+src/silx/resources/gui/icons/plot-yup.svg
+src/silx/resources/gui/icons/pointing-hand.png
+src/silx/resources/gui/icons/pointing-hand.svg
+src/silx/resources/gui/icons/previous.png
+src/silx/resources/gui/icons/previous.svg
+src/silx/resources/gui/icons/process-working.mng
+src/silx/resources/gui/icons/profile-clear.png
+src/silx/resources/gui/icons/profile-clear.svg
+src/silx/resources/gui/icons/profile1D.png
+src/silx/resources/gui/icons/profile1D.svg
+src/silx/resources/gui/icons/profile2D.png
+src/silx/resources/gui/icons/profile2D.svg
+src/silx/resources/gui/icons/remove.png
+src/silx/resources/gui/icons/remove.svg
+src/silx/resources/gui/icons/rm.png
+src/silx/resources/gui/icons/rm.svg
+src/silx/resources/gui/icons/rotate-3d.png
+src/silx/resources/gui/icons/rotate-3d.svg
+src/silx/resources/gui/icons/rudder.png
+src/silx/resources/gui/icons/rudder.svg
+src/silx/resources/gui/icons/selected.png
+src/silx/resources/gui/icons/selected.svg
+src/silx/resources/gui/icons/shape-circle-solid.png
+src/silx/resources/gui/icons/shape-circle-solid.svg
+src/silx/resources/gui/icons/shape-circle.png
+src/silx/resources/gui/icons/shape-circle.svg
+src/silx/resources/gui/icons/shape-cross.png
+src/silx/resources/gui/icons/shape-cross.svg
+src/silx/resources/gui/icons/shape-diagonal-directed.png
+src/silx/resources/gui/icons/shape-diagonal-directed.svg
+src/silx/resources/gui/icons/shape-diagonal.png
+src/silx/resources/gui/icons/shape-diagonal.svg
+src/silx/resources/gui/icons/shape-ellipse-solid.png
+src/silx/resources/gui/icons/shape-ellipse-solid.svg
+src/silx/resources/gui/icons/shape-ellipse.png
+src/silx/resources/gui/icons/shape-ellipse.svg
+src/silx/resources/gui/icons/shape-horizontal.png
+src/silx/resources/gui/icons/shape-horizontal.svg
+src/silx/resources/gui/icons/shape-polygon.png
+src/silx/resources/gui/icons/shape-polygon.svg
+src/silx/resources/gui/icons/shape-rectangle.png
+src/silx/resources/gui/icons/shape-rectangle.svg
+src/silx/resources/gui/icons/shape-square.png
+src/silx/resources/gui/icons/shape-square.svg
+src/silx/resources/gui/icons/shape-vertical.png
+src/silx/resources/gui/icons/shape-vertical.svg
+src/silx/resources/gui/icons/side-histograms.png
+src/silx/resources/gui/icons/side-histograms.svg
+src/silx/resources/gui/icons/silx.png
+src/silx/resources/gui/icons/silx.svg
+src/silx/resources/gui/icons/slice-cross.png
+src/silx/resources/gui/icons/slice-cross.svg
+src/silx/resources/gui/icons/slice-horizontal.png
+src/silx/resources/gui/icons/slice-horizontal.svg
+src/silx/resources/gui/icons/slice-vertical.png
+src/silx/resources/gui/icons/slice-vertical.svg
+src/silx/resources/gui/icons/sliders-off.png
+src/silx/resources/gui/icons/sliders-off.svg
+src/silx/resources/gui/icons/sliders-on.png
+src/silx/resources/gui/icons/sliders-on.svg
+src/silx/resources/gui/icons/spec.png
+src/silx/resources/gui/icons/spec.svg
+src/silx/resources/gui/icons/stats-active-items.png
+src/silx/resources/gui/icons/stats-active-items.svg
+src/silx/resources/gui/icons/stats-visible-data.png
+src/silx/resources/gui/icons/stats-visible-data.svg
+src/silx/resources/gui/icons/stats-whole-data.png
+src/silx/resources/gui/icons/stats-whole-data.svg
+src/silx/resources/gui/icons/stats-whole-items.png
+src/silx/resources/gui/icons/stats-whole-items.svg
+src/silx/resources/gui/icons/tree-collapse-all.png
+src/silx/resources/gui/icons/tree-collapse-all.svg
+src/silx/resources/gui/icons/tree-expand-all.png
+src/silx/resources/gui/icons/tree-expand-all.svg
+src/silx/resources/gui/icons/tree-sort.png
+src/silx/resources/gui/icons/tree-sort.svg
+src/silx/resources/gui/icons/view-1d.png
+src/silx/resources/gui/icons/view-1d.svg
+src/silx/resources/gui/icons/view-2d-stack.png
+src/silx/resources/gui/icons/view-2d-stack.svg
+src/silx/resources/gui/icons/view-2d.png
+src/silx/resources/gui/icons/view-2d.svg
+src/silx/resources/gui/icons/view-3d.png
+src/silx/resources/gui/icons/view-3d.svg
+src/silx/resources/gui/icons/view-fullscreen.png
+src/silx/resources/gui/icons/view-fullscreen.svg
+src/silx/resources/gui/icons/view-hdf5.png
+src/silx/resources/gui/icons/view-hdf5.svg
+src/silx/resources/gui/icons/view-nexus.png
+src/silx/resources/gui/icons/view-nexus.svg
+src/silx/resources/gui/icons/view-nofullscreen.png
+src/silx/resources/gui/icons/view-nofullscreen.svg
+src/silx/resources/gui/icons/view-raw.png
+src/silx/resources/gui/icons/view-raw.svg
+src/silx/resources/gui/icons/view-refresh.png
+src/silx/resources/gui/icons/view-refresh.svg
+src/silx/resources/gui/icons/view-text.png
+src/silx/resources/gui/icons/view-text.svg
+src/silx/resources/gui/icons/window-new.png
+src/silx/resources/gui/icons/window-new.svg
+src/silx/resources/gui/icons/zoom-back.png
+src/silx/resources/gui/icons/zoom-back.svg
+src/silx/resources/gui/icons/zoom-in.png
+src/silx/resources/gui/icons/zoom-in.svg
+src/silx/resources/gui/icons/zoom-original.png
+src/silx/resources/gui/icons/zoom-original.svg
+src/silx/resources/gui/icons/zoom-out.png
+src/silx/resources/gui/icons/zoom-out.svg
+src/silx/resources/gui/icons/zoom.png
+src/silx/resources/gui/icons/zoom.svg
+src/silx/resources/gui/icons/process-working/00.png
+src/silx/resources/gui/icons/process-working/01.png
+src/silx/resources/gui/icons/process-working/02.png
+src/silx/resources/gui/icons/process-working/03.png
+src/silx/resources/gui/icons/process-working/04.png
+src/silx/resources/gui/icons/process-working/05.png
+src/silx/resources/gui/icons/process-working/06.png
+src/silx/resources/gui/icons/process-working/07.png
+src/silx/resources/gui/icons/process-working/08.png
+src/silx/resources/gui/icons/process-working/09.png
+src/silx/resources/gui/icons/process-working/10.png
+src/silx/resources/gui/icons/process-working/11.png
+src/silx/resources/gui/icons/process-working/12.png
+src/silx/resources/gui/icons/process-working/13.png
+src/silx/resources/gui/icons/process-working/14.png
+src/silx/resources/gui/icons/process-working/15.png
+src/silx/resources/gui/icons/process-working/16.png
+src/silx/resources/gui/icons/process-working/17.png
+src/silx/resources/gui/icons/process-working/18.png
+src/silx/resources/gui/icons/process-working/19.png
+src/silx/resources/gui/icons/process-working/20.png
+src/silx/resources/gui/icons/process-working/21.png
+src/silx/resources/gui/icons/process-working/22.png
+src/silx/resources/gui/icons/process-working/23.png
+src/silx/resources/gui/icons/process-working/24.png
+src/silx/resources/gui/icons/process-working/25.png
+src/silx/resources/gui/icons/process-working/26.png
+src/silx/resources/gui/icons/process-working/27.png
+src/silx/resources/gui/icons/process-working/28.png
+src/silx/resources/gui/icons/process-working/29.png
+src/silx/resources/gui/icons/process-working/30.png
+src/silx/resources/gui/logo/silx.png
+src/silx/resources/gui/logo/silx.svg
+src/silx/resources/opencl/addition.cl
+src/silx/resources/opencl/array_utils.cl
+src/silx/resources/opencl/backproj.cl
+src/silx/resources/opencl/backproj_helper.cl
+src/silx/resources/opencl/bitonic.cl
+src/silx/resources/opencl/convolution.cl
+src/silx/resources/opencl/convolution_textures.cl
+src/silx/resources/opencl/doubleword.cl
+src/silx/resources/opencl/kahan.cl
+src/silx/resources/opencl/linalg.cl
+src/silx/resources/opencl/medfilt.cl
+src/silx/resources/opencl/preprocess.cl
+src/silx/resources/opencl/proj.cl
+src/silx/resources/opencl/sparse.cl
+src/silx/resources/opencl/statistics.cl
+src/silx/resources/opencl/codec/byte_offset.cl
+src/silx/resources/opencl/image/cast.cl
+src/silx/resources/opencl/image/histogram.cl
+src/silx/resources/opencl/image/map.cl
+src/silx/resources/opencl/image/max_min.cl
+src/silx/resources/opencl/sift/addition.cl
+src/silx/resources/opencl/sift/algebra.cl
+src/silx/resources/opencl/sift/convolution.cl
+src/silx/resources/opencl/sift/descriptor_cpu.cl
+src/silx/resources/opencl/sift/descriptor_gpu1.cl
+src/silx/resources/opencl/sift/descriptor_gpu2.cl
+src/silx/resources/opencl/sift/gaussian.cl
+src/silx/resources/opencl/sift/image.cl
+src/silx/resources/opencl/sift/interpolation.cl
+src/silx/resources/opencl/sift/matching_cpu.cl
+src/silx/resources/opencl/sift/matching_gpu.cl
+src/silx/resources/opencl/sift/memset.cl
+src/silx/resources/opencl/sift/orientation_cpu.cl
+src/silx/resources/opencl/sift/orientation_gpu.cl
+src/silx/resources/opencl/sift/preprocess.cl
+src/silx/resources/opencl/sift/reductions.cl
+src/silx/resources/opencl/sift/sift.cl
+src/silx/resources/opencl/sift/transform.cl
+src/silx/sx/__init__.py
+src/silx/sx/_plot.py
+src/silx/sx/_plot3d.py
+src/silx/test/__init__.py
+src/silx/test/test_resources.py
+src/silx/test/test_sx.py
+src/silx/test/test_version.py
+src/silx/test/utils.py
+src/silx/third_party/EdfFile.py
+src/silx/third_party/TiffIO.py
+src/silx/third_party/__init__.py
+src/silx/third_party/scipy_spatial.py
+src/silx/third_party/setup.py
+src/silx/third_party/_local/__init__.py
+src/silx/third_party/_local/scipy_spatial/__init__.py
+src/silx/third_party/_local/scipy_spatial/qhull.pxd
+src/silx/third_party/_local/scipy_spatial/qhull.pyx
+src/silx/third_party/_local/scipy_spatial/qhull_misc.h
+src/silx/third_party/_local/scipy_spatial/setlist.pxd
+src/silx/third_party/_local/scipy_spatial/setup.py
+src/silx/third_party/_local/scipy_spatial/qhull/COPYING.txt
+src/silx/third_party/_local/scipy_spatial/qhull/src/geom2_r.c
+src/silx/third_party/_local/scipy_spatial/qhull/src/geom_r.c
+src/silx/third_party/_local/scipy_spatial/qhull/src/geom_r.h
+src/silx/third_party/_local/scipy_spatial/qhull/src/global_r.c
+src/silx/third_party/_local/scipy_spatial/qhull/src/io_r.c
+src/silx/third_party/_local/scipy_spatial/qhull/src/io_r.h
+src/silx/third_party/_local/scipy_spatial/qhull/src/libqhull_r.c
+src/silx/third_party/_local/scipy_spatial/qhull/src/libqhull_r.h
+src/silx/third_party/_local/scipy_spatial/qhull/src/mem_r.c
+src/silx/third_party/_local/scipy_spatial/qhull/src/mem_r.h
+src/silx/third_party/_local/scipy_spatial/qhull/src/merge_r.c
+src/silx/third_party/_local/scipy_spatial/qhull/src/merge_r.h
+src/silx/third_party/_local/scipy_spatial/qhull/src/poly2_r.c
+src/silx/third_party/_local/scipy_spatial/qhull/src/poly_r.c
+src/silx/third_party/_local/scipy_spatial/qhull/src/poly_r.h
+src/silx/third_party/_local/scipy_spatial/qhull/src/qhull_ra.h
+src/silx/third_party/_local/scipy_spatial/qhull/src/qset_r.c
+src/silx/third_party/_local/scipy_spatial/qhull/src/qset_r.h
+src/silx/third_party/_local/scipy_spatial/qhull/src/random_r.c
+src/silx/third_party/_local/scipy_spatial/qhull/src/random_r.h
+src/silx/third_party/_local/scipy_spatial/qhull/src/rboxlib_r.c
+src/silx/third_party/_local/scipy_spatial/qhull/src/stat_r.c
+src/silx/third_party/_local/scipy_spatial/qhull/src/stat_r.h
+src/silx/third_party/_local/scipy_spatial/qhull/src/user_r.c
+src/silx/third_party/_local/scipy_spatial/qhull/src/user_r.h
+src/silx/third_party/_local/scipy_spatial/qhull/src/usermem_r.c
+src/silx/third_party/_local/scipy_spatial/qhull/src/userprintf_r.c
+src/silx/third_party/_local/scipy_spatial/qhull/src/userprintf_rbox_r.c
+src/silx/utils/ExternalResources.py
+src/silx/utils/__init__.py
+src/silx/utils/_have_openmp.pxd
+src/silx/utils/array_like.py
+src/silx/utils/debug.py
+src/silx/utils/deprecation.py
+src/silx/utils/enum.py
+src/silx/utils/exceptions.py
+src/silx/utils/files.py
+src/silx/utils/html.py
+src/silx/utils/launcher.py
+src/silx/utils/number.py
+src/silx/utils/property.py
+src/silx/utils/proxy.py
+src/silx/utils/retry.py
+src/silx/utils/setup.py
+src/silx/utils/testutils.py
+src/silx/utils/weakref.py
+src/silx/utils/include/silx_store_openmp.h
+src/silx/utils/test/__init__.py
+src/silx/utils/test/test_array_like.py
+src/silx/utils/test/test_debug.py
+src/silx/utils/test/test_deprecation.py
+src/silx/utils/test/test_enum.py
+src/silx/utils/test/test_external_resources.py
+src/silx/utils/test/test_launcher.py
+src/silx/utils/test/test_launcher_command.py
+src/silx/utils/test/test_number.py
+src/silx/utils/test/test_proxy.py
+src/silx/utils/test/test_retry.py
+src/silx/utils/test/test_testutils.py
+src/silx/utils/test/test_weakref.py \ No newline at end of file
diff --git a/silx.egg-info/requires.txt b/silx.egg-info/requires.txt
index 4ed2690..11d2418 100644
--- a/silx.egg-info/requires.txt
+++ b/silx.egg-info/requires.txt
@@ -2,7 +2,6 @@ numpy>=1.12.0
setuptools
h5py
fabio>=0.9
-six
[full]
pyopencl
@@ -12,5 +11,10 @@ matplotlib>=1.2.0
PyOpenGL
python-dateutil
PyQt5
+hdf5plugin
scipy
Pillow
+
+[test]
+pytest
+pytest-xvfb
diff --git a/silx/__init__.py b/silx/__init__.py
deleted file mode 100644
index 2892572..0000000
--- a/silx/__init__.py
+++ /dev/null
@@ -1,61 +0,0 @@
-# coding: utf-8
-# /*##########################################################################
-#
-# Copyright (c) 2015-2018 European Synchrotron Radiation Facility
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-#
-# ###########################################################################*/
-"""The silx package contains the following main sub-packages:
-
-- silx.gui: Qt widgets for data visualization and data file browsing
-- silx.image: Some processing functions for 2D images
-- silx.io: Reading and writing data files (HDF5/NeXus, SPEC, ...)
-- silx.math: Some processing functions for 1D, 2D, 3D, nD arrays
-- silx.opencl: OpenCL-based data processing
-- silx.sx: High-level silx functions suited for (I)Python console.
-- silx.utils: Miscellaneous convenient functions
-
-See silx documentation: http://www.silx.org/doc/silx/latest/
-"""
-
-from __future__ import absolute_import, print_function, division
-
-__authors__ = ["Jérôme Kieffer"]
-__license__ = "MIT"
-__date__ = "26/04/2018"
-
-import os as _os
-import logging as _logging
-from ._config import Config as _Config
-
-config = _Config()
-"""Global configuration shared with the whole library"""
-
-# Attach a do nothing logging handler for silx
-_logging.getLogger(__name__).addHandler(_logging.NullHandler())
-
-
-project = _os.path.basename(_os.path.dirname(_os.path.abspath(__file__)))
-
-try:
- from ._version import __date__ as date # noqa
- from ._version import version, version_info, hexversion, strictversion # noqa
-except ImportError:
- raise RuntimeError("Do NOT use %s from its sources: build it and use the built version" % project)
diff --git a/silx/app/convert.py b/silx/app/convert.py
deleted file mode 100644
index 7e601ce..0000000
--- a/silx/app/convert.py
+++ /dev/null
@@ -1,525 +0,0 @@
-# coding: utf-8
-# /*##########################################################################
-# Copyright (C) 2017-2018 European Synchrotron Radiation Facility
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-#
-# ############################################################################*/
-"""Convert silx supported data files into HDF5 files"""
-
-__authors__ = ["P. Knobel"]
-__license__ = "MIT"
-__date__ = "05/02/2019"
-
-import ast
-import os
-import argparse
-from glob import glob
-import logging
-import re
-import time
-import numpy
-import six
-
-import silx.io
-from silx.io.specfile import is_specfile
-from silx.io import fabioh5
-
-_logger = logging.getLogger(__name__)
-"""Module logger"""
-
-
-def c_format_string_to_re(pattern_string):
- """
-
- :param pattern_string: C style format string with integer patterns
- (e.g. "%d", "%04d").
- Not supported: fixed length padded with whitespaces (e.g "%4d", "%-4d")
- :return: Equivalent regular expression (e.g. "\\d+", "\\d{4}")
- """
- # escape dots and backslashes
- pattern_string = pattern_string.replace("\\", "\\\\")
- pattern_string = pattern_string.replace(".", r"\.")
-
- # %d
- pattern_string = pattern_string.replace("%d", r"([-+]?\d+)")
-
- # %0nd
- for sub_pattern in re.findall(r"%0\d+d", pattern_string):
- n = int(re.search(r"%0(\d+)d", sub_pattern).group(1))
- if n == 1:
- re_sub_pattern = r"([+-]?\d)"
- else:
- re_sub_pattern = r"([\d+-]\d{%d})" % (n - 1)
- pattern_string = pattern_string.replace(sub_pattern, re_sub_pattern, 1)
-
- return pattern_string
-
-
-def drop_indices_before_begin(filenames, regex, begin):
- """
-
- :param List[str] filenames: list of filenames
- :param str regex: Regexp used to find indices in a filename
- :param str begin: Comma separated list of begin indices
- :return: List of filenames with only indices >= begin
- """
- begin_indices = list(map(int, begin.split(",")))
- output_filenames = []
- for fname in filenames:
- m = re.match(regex, fname)
- file_indices = list(map(int, m.groups()))
- if len(file_indices) != len(begin_indices):
- raise IOError("Number of indices found in filename "
- "does not match number of parsed end indices.")
- good_indices = True
- for i, fidx in enumerate(file_indices):
- if fidx < begin_indices[i]:
- good_indices = False
- if good_indices:
- output_filenames.append(fname)
- return output_filenames
-
-
-def drop_indices_after_end(filenames, regex, end):
- """
-
- :param List[str] filenames: list of filenames
- :param str regex: Regexp used to find indices in a filename
- :param str end: Comma separated list of end indices
- :return: List of filenames with only indices <= end
- """
- end_indices = list(map(int, end.split(",")))
- output_filenames = []
- for fname in filenames:
- m = re.match(regex, fname)
- file_indices = list(map(int, m.groups()))
- if len(file_indices) != len(end_indices):
- raise IOError("Number of indices found in filename "
- "does not match number of parsed end indices.")
- good_indices = True
- for i, fidx in enumerate(file_indices):
- if fidx > end_indices[i]:
- good_indices = False
- if good_indices:
- output_filenames.append(fname)
- return output_filenames
-
-
-def are_files_missing_in_series(filenames, regex):
- """Return True if any file is missing in a list of filenames
- that are supposed to follow a pattern.
-
- :param List[str] filenames: list of filenames
- :param str regex: Regexp used to find indices in a filename
- :return: boolean
- :raises AssertionError: if a filename does not match the regexp
- """
- previous_indices = None
- for fname in filenames:
- m = re.match(regex, fname)
- assert m is not None, \
- "regex %s does not match filename %s" % (fname, regex)
- new_indices = list(map(int, m.groups()))
- if previous_indices is not None:
- for old_idx, new_idx in zip(previous_indices, new_indices):
- if (new_idx - old_idx) > 1:
- _logger.error("Index increment > 1 in file series: "
- "previous idx %d, next idx %d",
- old_idx, new_idx)
- return True
- previous_indices = new_indices
- return False
-
-
-def are_all_specfile(filenames):
- """Return True if all files in a list are SPEC files.
- :param List[str] filenames: list of filenames
- """
- for fname in filenames:
- if not is_specfile(fname):
- return False
- return True
-
-
-def contains_specfile(filenames):
- """Return True if any file in a list are SPEC files.
- :param List[str] filenames: list of filenames
- """
- for fname in filenames:
- if is_specfile(fname):
- return True
- return False
-
-
-def main(argv):
- """
- Main function to launch the converter as an application
-
- :param argv: Command line arguments
- :returns: exit status
- """
- parser = argparse.ArgumentParser(description=__doc__)
- parser.add_argument(
- 'input_files',
- nargs="*",
- help='Input files (EDF, TIFF, SPEC...). When specifying multiple '
- 'files, you cannot specify both fabio images and SPEC files. '
- 'Multiple SPEC files will simply be concatenated, with one '
- 'entry per scan. Multiple image files will be merged into '
- 'a single entry with a stack of images.')
- # input_files and --filepattern are mutually exclusive
- parser.add_argument(
- '--file-pattern',
- help='File name pattern for loading a series of indexed image files '
- '(toto_%%04d.edf). This argument is incompatible with argument '
- 'input_files. If an output URI with a HDF5 path is provided, '
- 'only the content of the NXdetector group will be copied there. '
- 'If no HDF5 path, or just "/", is given, a complete NXdata '
- 'structure will be created.')
- parser.add_argument(
- '-o', '--output-uri',
- default=time.strftime("%Y%m%d-%H%M%S") + '.h5',
- help='Output file name (HDF5). An URI can be provided to write'
- ' the data into a specific group in the output file: '
- '/path/to/file::/path/to/group. '
- 'If not provided, the filename defaults to a timestamp:'
- ' YYYYmmdd-HHMMSS.h5')
- parser.add_argument(
- '-m', '--mode',
- default="w-",
- help='Write mode: "r+" (read/write, file must exist), '
- '"w" (write, existing file is lost), '
- '"w-" (write, fail if file exists) or '
- '"a" (read/write if exists, create otherwise)')
- parser.add_argument(
- '--begin',
- help='First file index, or first file indices to be considered. '
- 'This argument only makes sense when used together with '
- '--file-pattern. Provide as many start indices as there '
- 'are indices in the file pattern, separated by commas. '
- 'Examples: "--filepattern toto_%%d.edf --begin 100", '
- ' "--filepattern toto_%%d_%%04d_%%02d.edf --begin 100,2000,5".')
- parser.add_argument(
- '--end',
- help='Last file index, or last file indices to be considered. '
- 'The same rules as with argument --begin apply. '
- 'Example: "--filepattern toto_%%d_%%d.edf --end 199,1999"')
- parser.add_argument(
- '--add-root-group',
- action="store_true",
- help='This option causes each input file to be written to a '
- 'specific root group with the same name as the file. When '
- 'merging multiple input files, this can help preventing conflicts'
- ' when datasets have the same name (see --overwrite-data). '
- 'This option is ignored when using --file-pattern.')
- parser.add_argument(
- '--overwrite-data',
- action="store_true",
- help='If the output path exists and an input dataset has the same'
- ' name as an existing output dataset, overwrite the output '
- 'dataset (in modes "r+" or "a").')
- parser.add_argument(
- '--min-size',
- type=int,
- default=500,
- help='Minimum number of elements required to be in a dataset to '
- 'apply compression or chunking (default 500).')
- parser.add_argument(
- '--chunks',
- nargs="?",
- const="auto",
- help='Chunk shape. Provide an argument that evaluates as a python '
- 'tuple (e.g. "(1024, 768)"). If this option is provided without '
- 'specifying an argument, the h5py library will guess a chunk for '
- 'you. Note that if you specify an explicit chunking shape, it '
- 'will be applied identically to all datasets with a large enough '
- 'size (see --min-size). ')
- parser.add_argument(
- '--compression',
- nargs="?",
- const="gzip",
- help='Compression filter. By default, the datasets in the output '
- 'file are not compressed. If this option is specified without '
- 'argument, the GZIP compression is used. Additional compression '
- 'filters may be available, depending on your HDF5 installation.')
-
- def check_gzip_compression_opts(value):
- ivalue = int(value)
- if ivalue < 0 or ivalue > 9:
- raise argparse.ArgumentTypeError(
- "--compression-opts must be an int from 0 to 9")
- return ivalue
-
- parser.add_argument(
- '--compression-opts',
- type=check_gzip_compression_opts,
- help='Compression options. For "gzip", this may be an integer from '
- '0 to 9, with a default of 4. This is only supported for GZIP.')
- parser.add_argument(
- '--shuffle',
- action="store_true",
- help='Enables the byte shuffle filter. This may improve the compression '
- 'ratio for block oriented compressors like GZIP or LZF.')
- parser.add_argument(
- '--fletcher32',
- action="store_true",
- help='Adds a checksum to each chunk to detect data corruption.')
- parser.add_argument(
- '--debug',
- action="store_true",
- default=False,
- help='Set logging system in debug mode')
-
- options = parser.parse_args(argv[1:])
-
- if options.debug:
- logging.root.setLevel(logging.DEBUG)
-
- # Import after parsing --debug
- try:
- # it should be loaded before h5py
- import hdf5plugin # noqa
- except ImportError:
- _logger.debug("Backtrace", exc_info=True)
- hdf5plugin = None
-
- import h5py
-
- try:
- from silx.io.convert import write_to_h5
- except ImportError:
- _logger.debug("Backtrace", exc_info=True)
- write_to_h5 = None
-
- if hdf5plugin is None:
- message = "Module 'hdf5plugin' is not installed. It supports additional hdf5"\
- + " compressions. You can install it using \"pip install hdf5plugin\"."
- _logger.debug(message)
-
- # Process input arguments (mutually exclusive arguments)
- if bool(options.input_files) == bool(options.file_pattern is not None):
- if not options.input_files:
- message = "You must specify either input files (at least one), "
- message += "or a file pattern."
- else:
- message = "You cannot specify input files and a file pattern"
- message += " at the same time."
- _logger.error(message)
- return -1
- elif options.input_files:
- # some shells (windows) don't interpret wildcard characters (*, ?, [])
- old_input_list = list(options.input_files)
- options.input_files = []
- for fname in old_input_list:
- globbed_files = glob(fname)
- if not globbed_files:
- # no files found, keep the name as it is, to raise an error later
- options.input_files += [fname]
- else:
- # glob does not sort files, but the bash shell does
- options.input_files += sorted(globbed_files)
- else:
- # File series
- dirname = os.path.dirname(options.file_pattern)
- file_pattern_re = c_format_string_to_re(options.file_pattern) + "$"
- files_in_dir = glob(os.path.join(dirname, "*"))
- _logger.debug("""
- Processing file_pattern
- dirname: %s
- file_pattern_re: %s
- files_in_dir: %s
- """, dirname, file_pattern_re, files_in_dir)
-
- options.input_files = sorted(list(filter(lambda name: re.match(file_pattern_re, name),
- files_in_dir)))
- _logger.debug("options.input_files: %s", options.input_files)
-
- if options.begin is not None:
- options.input_files = drop_indices_before_begin(options.input_files,
- file_pattern_re,
- options.begin)
- _logger.debug("options.input_files after applying --begin: %s",
- options.input_files)
-
- if options.end is not None:
- options.input_files = drop_indices_after_end(options.input_files,
- file_pattern_re,
- options.end)
- _logger.debug("options.input_files after applying --end: %s",
- options.input_files)
-
- if are_files_missing_in_series(options.input_files,
- file_pattern_re):
- _logger.error("File missing in the file series. Aborting.")
- return -1
-
- if not options.input_files:
- _logger.error("No file matching --file-pattern found.")
- return -1
-
- # Test that the output path is writeable
- if "::" in options.output_uri:
- output_name, hdf5_path = options.output_uri.split("::")
- else:
- output_name, hdf5_path = options.output_uri, "/"
-
- if os.path.isfile(output_name):
- if options.mode == "w-":
- _logger.error("Output file %s exists and mode is 'w-' (default)."
- " Aborting. To append data to an existing file, "
- "use 'a' or 'r+'.",
- output_name)
- return -1
- elif not os.access(output_name, os.W_OK):
- _logger.error("Output file %s exists and is not writeable.",
- output_name)
- return -1
- elif options.mode == "w":
- _logger.info("Output file %s exists and mode is 'w'. "
- "Overwriting existing file.", output_name)
- elif options.mode in ["a", "r+"]:
- _logger.info("Appending data to existing file %s.",
- output_name)
- else:
- if options.mode == "r+":
- _logger.error("Output file %s does not exist and mode is 'r+'"
- " (append, file must exist). Aborting.",
- output_name)
- return -1
- else:
- _logger.info("Creating new output file %s.",
- output_name)
-
- # Test that all input files exist and are readable
- bad_input = False
- for fname in options.input_files:
- if not os.access(fname, os.R_OK):
- _logger.error("Cannot read input file %s.",
- fname)
- bad_input = True
- if bad_input:
- _logger.error("Aborting.")
- return -1
-
- # create_dataset special args
- create_dataset_args = {}
- if options.chunks is not None:
- if options.chunks.lower() in ["auto", "true"]:
- create_dataset_args["chunks"] = True
- else:
- try:
- chunks = ast.literal_eval(options.chunks)
- except (ValueError, SyntaxError):
- _logger.error("Invalid --chunks argument %s", options.chunks)
- return -1
- if not isinstance(chunks, (tuple, list)):
- _logger.error("--chunks argument str does not evaluate to a tuple")
- return -1
- else:
- nitems = numpy.prod(chunks)
- nbytes = nitems * 8
- if nbytes > 10**6:
- _logger.warning("Requested chunk size might be larger than"
- " the default 1MB chunk cache, for float64"
- " data. This can dramatically affect I/O "
- "performances.")
- create_dataset_args["chunks"] = chunks
-
- if options.compression is not None:
- try:
- compression = int(options.compression)
- except ValueError:
- compression = options.compression
- create_dataset_args["compression"] = compression
-
- if options.compression_opts is not None:
- create_dataset_args["compression_opts"] = options.compression_opts
-
- if options.shuffle:
- create_dataset_args["shuffle"] = True
-
- if options.fletcher32:
- create_dataset_args["fletcher32"] = True
-
- if (len(options.input_files) > 1 and
- not contains_specfile(options.input_files) and
- not options.add_root_group) or options.file_pattern is not None:
- # File series -> stack of images
- input_group = fabioh5.File(file_series=options.input_files)
- if hdf5_path != "/":
- # we want to append only data and headers to an existing file
- input_group = input_group["/scan_0/instrument/detector_0"]
- with h5py.File(output_name, mode=options.mode) as h5f:
- write_to_h5(input_group, h5f,
- h5path=hdf5_path,
- overwrite_data=options.overwrite_data,
- create_dataset_args=create_dataset_args,
- min_size=options.min_size)
-
- elif len(options.input_files) == 1 or \
- are_all_specfile(options.input_files) or\
- options.add_root_group:
- # single file, or spec files
- h5paths_and_groups = []
- for input_name in options.input_files:
- hdf5_path_for_file = hdf5_path
- if options.add_root_group:
- hdf5_path_for_file = hdf5_path.rstrip("/") + "/" + os.path.basename(input_name)
- try:
- h5paths_and_groups.append((hdf5_path_for_file,
- silx.io.open(input_name)))
- except IOError:
- _logger.error("Cannot read file %s. If this is a file format "
- "supported by the fabio library, you can try to"
- " install fabio (`pip install fabio`)."
- " Aborting conversion.",
- input_name)
- return -1
-
- with h5py.File(output_name, mode=options.mode) as h5f:
- for hdf5_path_for_file, input_group in h5paths_and_groups:
- write_to_h5(input_group, h5f,
- h5path=hdf5_path_for_file,
- overwrite_data=options.overwrite_data,
- create_dataset_args=create_dataset_args,
- min_size=options.min_size)
-
- else:
- # multiple file, SPEC and fabio images mixed
- _logger.error("Multiple files with incompatible formats specified. "
- "You can provide multiple SPEC files or multiple image "
- "files, but not both.")
- return -1
-
- with h5py.File(output_name, mode="r+") as h5f:
- # append "silx convert" to the creator attribute, for NeXus files
- previous_creator = h5f.attrs.get("creator", u"")
- creator = "silx convert (v%s)" % silx.version
- # only if it not already there
- if creator not in previous_creator:
- if not previous_creator:
- new_creator = creator
- else:
- new_creator = previous_creator + "; " + creator
- h5f.attrs["creator"] = numpy.array(
- new_creator,
- dtype=h5py.special_dtype(vlen=six.text_type))
-
- return 0
diff --git a/silx/app/test/__init__.py b/silx/app/test/__init__.py
deleted file mode 100644
index 7c91134..0000000
--- a/silx/app/test/__init__.py
+++ /dev/null
@@ -1,39 +0,0 @@
-# coding: utf-8
-# /*##########################################################################
-#
-# Copyright (c) 2016-2017 European Synchrotron Radiation Facility
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-#
-# ###########################################################################*/
-__authors__ = ["V. Valls"]
-__license__ = "MIT"
-__date__ = "06/06/2018"
-
-import unittest
-
-from ..view import test as test_view
-from . import test_convert
-
-
-def suite():
- test_suite = unittest.TestSuite()
- test_suite.addTest(test_view.suite())
- test_suite.addTest(test_convert.suite())
- return test_suite
diff --git a/silx/app/test/test_convert.py b/silx/app/test/test_convert.py
deleted file mode 100644
index 857f30c..0000000
--- a/silx/app/test/test_convert.py
+++ /dev/null
@@ -1,167 +0,0 @@
-# coding: utf-8
-# /*##########################################################################
-#
-# Copyright (c) 2016-2018 European Synchrotron Radiation Facility
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-#
-# ###########################################################################*/
-"""Module testing silx.app.convert"""
-
-__authors__ = ["P. Knobel"]
-__license__ = "MIT"
-__date__ = "17/01/2018"
-
-
-import os
-import sys
-import tempfile
-import unittest
-import io
-import gc
-import h5py
-
-import silx
-from .. import convert
-from silx.utils import testutils
-from silx.io.utils import h5py_read_dataset
-
-
-# content of a spec file
-sftext = """#F /tmp/sf.dat
-#E 1455180875
-#D Thu Feb 11 09:54:35 2016
-#C imaging User = opid17
-#O0 Pslit HGap MRTSlit UP MRTSlit DOWN
-#O1 Sslit1 VOff Sslit1 HOff Sslit1 VGap
-#o0 pshg mrtu mrtd
-#o2 ss1vo ss1ho ss1vg
-
-#J0 Seconds IA ion.mono Current
-#J1 xbpmc2 idgap1 Inorm
-
-#S 1 ascan ss1vo -4.55687 -0.556875 40 0.2
-#D Thu Feb 11 09:55:20 2016
-#T 0.2 (Seconds)
-#P0 180.005 -0.66875 0.87125
-#P1 14.74255 16.197579 12.238283
-#N 4
-#L MRTSlit UP second column 3rd_col
--1.23 5.89 8
-8.478100E+01 5 1.56
-3.14 2.73 -3.14
-1.2 2.3 3.4
-
-#S 1 aaaaaa
-#D Thu Feb 11 10:00:32 2016
-#@MCADEV 1
-#@MCA %16C
-#@CHANN 3 0 2 1
-#@CALIB 1 2 3
-#N 3
-#L uno duo
-1 2
-@A 0 1 2
-@A 10 9 8
-3 4
-@A 3.1 4 5
-@A 7 6 5
-5 6
-@A 6 7.7 8
-@A 4 3 2
-"""
-
-
-class TestConvertCommand(unittest.TestCase):
- """Test command line parsing"""
-
- def testHelp(self):
- # option -h must cause a `raise SystemExit` or a `return 0`
- try:
- result = convert.main(["convert", "--help"])
- except SystemExit as e:
- result = e.args[0]
- self.assertEqual(result, 0)
-
- def testWrongOption(self):
- # presence of a wrong option must cause a SystemExit or a return
- # with a non-zero status
- try:
- result = convert.main(["convert", "--foo"])
- except SystemExit as e:
- result = e.args[0]
- self.assertNotEqual(result, 0)
-
- @testutils.test_logging(convert._logger.name, error=3)
- # one error log per missing file + one "Aborted" error log
- def testWrongFiles(self):
- result = convert.main(["convert", "foo.spec", "bar.edf"])
- self.assertNotEqual(result, 0)
-
- def testFile(self):
- # create a writable temp directory
- tempdir = tempfile.mkdtemp()
-
- # write a temporary SPEC file
- specname = os.path.join(tempdir, "input.dat")
- with io.open(specname, "wb") as fd:
- if sys.version_info < (3, ):
- fd.write(sftext)
- else:
- fd.write(bytes(sftext, 'ascii'))
-
- # convert it
- h5name = os.path.join(tempdir, "output.h5")
- assert not os.path.isfile(h5name)
- command_list = ["convert", "-m", "w",
- specname, "-o", h5name]
- result = convert.main(command_list)
-
- self.assertEqual(result, 0)
- self.assertTrue(os.path.isfile(h5name))
-
- with h5py.File(h5name, "r") as h5f:
- title12 = h5py_read_dataset(h5f["/1.2/title"])
- if sys.version_info < (3, ):
- title12 = title12.encode("utf-8")
- self.assertEqual(title12,
- "aaaaaa")
-
- creator = h5f.attrs.get("creator")
- self.assertIsNotNone(creator, "No creator attribute in NXroot group")
- if sys.version_info < (3, ):
- creator = creator.encode("utf-8")
- self.assertIn("silx convert (v%s)" % silx.version, creator)
-
- # delete input file
- gc.collect() # necessary to free spec file on Windows
- os.unlink(specname)
- os.unlink(h5name)
- os.rmdir(tempdir)
-
-
-def suite():
- test_suite = unittest.TestSuite()
- loader = unittest.defaultTestLoader.loadTestsFromTestCase
- test_suite.addTest(loader(TestConvertCommand))
- return test_suite
-
-
-if __name__ == '__main__':
- unittest.main(defaultTest='suite')
diff --git a/silx/app/test_.py b/silx/app/test_.py
deleted file mode 100644
index a8e58bf..0000000
--- a/silx/app/test_.py
+++ /dev/null
@@ -1,159 +0,0 @@
-# coding: utf-8
-# /*##########################################################################
-# Copyright (C) 2016-2018 European Synchrotron Radiation Facility
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-#
-# ############################################################################*/
-"""Launch unittests of the library"""
-
-__authors__ = ["V. Valls"]
-__license__ = "MIT"
-__date__ = "12/01/2018"
-
-import sys
-import argparse
-import logging
-import unittest
-
-
-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
-for h in logging.root.handlers:
- logging.root.removeHandler(h)
-logging.root.addHandler(createBasicHandler())
-logging.captureWarnings(True)
-
-_logger = logging.getLogger(__name__)
-"""Module logger"""
-
-
-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.printErrorList("SKIPPED", self.skipped)
-
-
-def main(argv):
- """
- Main function to launch the unittests as an application
-
- :param argv: Command line arguments
- :returns: exit status
- """
- from silx.test import utils
-
- parser = argparse.ArgumentParser(description=__doc__)
- 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: 'PyQt5' or 'PySide2'")
- utils.test_options.add_parser_argument(parser)
-
- options = parser.parse_args(argv[1:])
-
- 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.qt_binding:
- binding = options.qt_binding.lower()
- if binding == "pyqt4":
- _logger.info("Force using PyQt4")
- 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)
-
- # Configure test options
- utils.test_options.configure(options)
-
- # Run the tests
- runnerArgs = {}
- runnerArgs["verbosity"] = test_verbosity
- runnerArgs["buffer"] = use_buffer
- runner = unittest.TextTestRunner(**runnerArgs)
- runner.resultclass = TextTestResultWithSkipList
-
- # Display the result when using CTRL-C
- unittest.installHandler()
-
- import silx.test
- test_suite = unittest.TestSuite()
- test_suite.addTest(silx.test.suite())
- result = runner.run(test_suite)
-
- if result.wasSuccessful():
- exit_status = 0
- else:
- exit_status = 1
- return exit_status
diff --git a/silx/app/view/About.py b/silx/app/view/About.py
deleted file mode 100644
index a2b430f..0000000
--- a/silx/app/view/About.py
+++ /dev/null
@@ -1,257 +0,0 @@
-# coding: utf-8
-# /*##########################################################################
-# Copyright (C) 2016-2019 European Synchrotron Radiation Facility
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-#
-# ############################################################################*/
-"""About box for Silx viewer"""
-
-__authors__ = ["V. Valls"]
-__license__ = "MIT"
-__date__ = "05/07/2018"
-
-import os
-import sys
-
-from silx.gui import qt
-from silx.gui import icons
-
-_LICENSE_TEMPLATE = """<p align="center">
-<b>Copyright (C) {year} European Synchrotron Radiation Facility</b>
-</p>
-
-<p align="justify">
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-</p>
-
-<p align="justify">
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-</p>
-
-<p align="justify">
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-</p>
-"""
-
-
-class About(qt.QDialog):
- """
- Util dialog to display an common about box for all the silx GUIs.
- """
-
- def __init__(self, parent=None):
- """
- :param files_: List of HDF5 or Spec files (pathes or
- :class:`silx.io.spech5.SpecH5` or :class:`h5py.File`
- instances)
- """
- super(About, self).__init__(parent)
- self.__createLayout()
- self.setSizePolicy(qt.QSizePolicy.Fixed, qt.QSizePolicy.Fixed)
- self.setModal(True)
- self.setApplicationName(None)
-
- def __createLayout(self):
- layout = qt.QVBoxLayout(self)
- layout.setContentsMargins(24, 15, 24, 20)
- layout.setSpacing(8)
-
- self.__label = qt.QLabel(self)
- self.__label.setWordWrap(True)
- flags = self.__label.textInteractionFlags()
- flags = flags | qt.Qt.TextSelectableByKeyboard
- flags = flags | qt.Qt.TextSelectableByMouse
- self.__label.setTextInteractionFlags(flags)
- self.__label.setOpenExternalLinks(True)
- self.__label.setSizePolicy(qt.QSizePolicy.Minimum, qt.QSizePolicy.Preferred)
-
- licenseButton = qt.QPushButton(self)
- licenseButton.setText("License...")
- licenseButton.clicked.connect(self.__displayLicense)
- licenseButton.setAutoDefault(False)
-
- self.__options = qt.QDialogButtonBox()
- self.__options.addButton(licenseButton, qt.QDialogButtonBox.ActionRole)
- okButton = self.__options.addButton(qt.QDialogButtonBox.Ok)
- okButton.setDefault(True)
- okButton.clicked.connect(self.accept)
-
- layout.addWidget(self.__label)
- layout.addWidget(self.__options)
- layout.setStretch(0, 100)
- layout.setStretch(1, 0)
-
- def getHtmlLicense(self):
- """Returns the text license in HTML format.
-
- :rtype: str
- """
- from silx._version import __date__ as date
- year = date.split("/")[2]
- info = dict(
- year=year
- )
- textLicense = _LICENSE_TEMPLATE.format(**info)
- return textLicense
-
- def __displayLicense(self):
- """Displays the license used by silx."""
- text = self.getHtmlLicense()
- licenseDialog = qt.QMessageBox(self)
- licenseDialog.setWindowTitle("License")
- licenseDialog.setText(text)
- licenseDialog.exec_()
-
- def setApplicationName(self, name):
- self.__applicationName = name
- if name is None:
- self.setWindowTitle("About")
- else:
- self.setWindowTitle("About %s" % name)
- self.__updateText()
-
- @staticmethod
- def __formatOptionalLibraries(name, isAvailable):
- """Utils to format availability of features"""
- if isAvailable:
- template = '<b>%s</b> is <font color="green">loaded</font>'
- else:
- template = '<b>%s</b> is <font color="red">not loaded</font>'
- return template % name