tomwer 1.3.27__py3-none-any.whl → 1.4.0rc0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (632) hide show
  1. orangecontrib/tomwer/orange/managedprocess.py +1 -29
  2. orangecontrib/tomwer/orange/settings.py +2 -28
  3. orangecontrib/tomwer/tests/TestAcquisition.py +220 -0
  4. orangecontrib/tomwer/tutorials/append_raw_darks_and_flats_frames_to_NXtomos.ows +2 -2
  5. orangecontrib/tomwer/tutorials/copy_reduced_darks_and_flats_meth1.ows +1 -1
  6. orangecontrib/tomwer/tutorials/{icat_publication.ows → drac_publication.ows} +7 -21
  7. orangecontrib/tomwer/tutorials/id16b/ID16b_full_volume.ows +22 -0
  8. orangecontrib/tomwer/tutorials/id16b/ID16b_insitu.ows +302 -0
  9. orangecontrib/tomwer/tutorials/id16b/ID16b_normalization.ows +218 -0
  10. orangecontrib/tomwer/tutorials/simple_volume_to_slurm_reconstruction.ows +29 -24
  11. orangecontrib/tomwer/tutorials/test_cor.ows +19 -0
  12. orangecontrib/tomwer/tutorials/volume_casting_on_slurm.ows +54 -0
  13. orangecontrib/tomwer/widgets/__init__.py +3 -5
  14. orangecontrib/tomwer/widgets/cluster/FutureSupervisorOW.py +35 -54
  15. orangecontrib/tomwer/widgets/cluster/SlurmClusterOW.py +1 -31
  16. orangecontrib/tomwer/widgets/control/AdvancementOW.py +1 -29
  17. orangecontrib/tomwer/widgets/control/DataDiscoveryOW.py +5 -4
  18. orangecontrib/tomwer/widgets/control/DataListenerOW.py +1 -29
  19. orangecontrib/tomwer/widgets/control/DataSelectorOW.py +11 -30
  20. orangecontrib/tomwer/widgets/control/DataTransfertOW.py +2 -28
  21. orangecontrib/tomwer/widgets/control/DataValidatorOW.py +1 -28
  22. orangecontrib/tomwer/widgets/control/DataWatcherOW.py +1 -28
  23. orangecontrib/tomwer/widgets/control/EDF2NXTomomillOW.py +48 -51
  24. orangecontrib/tomwer/widgets/control/EmailOW.py +12 -2
  25. orangecontrib/tomwer/widgets/control/FilterOW.py +1 -28
  26. orangecontrib/tomwer/widgets/control/NXTomomillOW.py +37 -53
  27. orangecontrib/tomwer/widgets/control/NXtomoConcatenate.py +21 -20
  28. orangecontrib/tomwer/widgets/control/NotifierOW.py +9 -28
  29. orangecontrib/tomwer/widgets/control/ReduceDarkFlatSelectorOW.py +3 -2
  30. orangecontrib/tomwer/widgets/control/SingleTomoObjOW.py +1 -27
  31. orangecontrib/tomwer/widgets/control/TimerOW.py +9 -28
  32. orangecontrib/tomwer/widgets/control/TomoObjSeriesOW.py +58 -0
  33. orangecontrib/tomwer/widgets/control/VolumeSelector.py +8 -30
  34. orangecontrib/tomwer/widgets/control/icons/nxtomomill.svg +173 -119
  35. orangecontrib/tomwer/widgets/control/icons/reduced_darkflat_selector.png +0 -0
  36. orangecontrib/tomwer/widgets/control/icons/reduced_darkflat_selector.svg +55 -195
  37. orangecontrib/tomwer/widgets/control/icons/{tomoobjserie.svg → tomoobjseries.svg} +2 -2
  38. orangecontrib/tomwer/widgets/dataportal/PublishProcessedDataOW.py +172 -0
  39. orangecontrib/tomwer/widgets/{icat → dataportal}/__init__.py +2 -2
  40. orangecontrib/tomwer/widgets/debugtools/DatasetGeneratorOW.py +2 -29
  41. orangecontrib/tomwer/widgets/debugtools/ObjectInspectorOW.py +1 -29
  42. orangecontrib/tomwer/widgets/edit/DarkFlatPatchOW.py +48 -73
  43. orangecontrib/tomwer/widgets/edit/ImageKeyEditorOW.py +48 -75
  44. orangecontrib/tomwer/widgets/edit/ImageKeyUpgraderOW.py +5 -30
  45. orangecontrib/tomwer/widgets/edit/NXtomoEditorOW.py +51 -52
  46. orangecontrib/tomwer/widgets/other/PythonScriptOW.py +22 -10
  47. orangecontrib/tomwer/widgets/reconstruction/AxisOW.py +48 -49
  48. orangecontrib/tomwer/widgets/reconstruction/CastNabuVolumeOW.py +22 -68
  49. orangecontrib/tomwer/widgets/reconstruction/DarkRefAndCopyOW.py +3 -30
  50. orangecontrib/tomwer/widgets/reconstruction/NabuHelicalPrepareWeightsDoubleOW.py +21 -19
  51. orangecontrib/tomwer/widgets/reconstruction/NabuOW.py +7 -70
  52. orangecontrib/tomwer/widgets/reconstruction/NabuVolumeOW.py +40 -85
  53. orangecontrib/tomwer/widgets/reconstruction/SAAxisOW.py +15 -40
  54. orangecontrib/tomwer/widgets/reconstruction/SADeltaBetaOW.py +13 -35
  55. orangecontrib/tomwer/widgets/reconstruction/SinoNormOW.py +2 -30
  56. orangecontrib/tomwer/widgets/stitching/ZStitchingConfigOW.py +11 -11
  57. orangecontrib/tomwer/widgets/utils.py +2 -29
  58. orangecontrib/tomwer/widgets/visualization/DataViewerOW.py +1 -27
  59. orangecontrib/tomwer/widgets/visualization/DiffViewerOW.py +1 -27
  60. orangecontrib/tomwer/widgets/visualization/NXtomoMetadataViewerOW.py +1 -1
  61. orangecontrib/tomwer/widgets/visualization/RadioStackOW.py +2 -28
  62. orangecontrib/tomwer/widgets/visualization/SampleMovedOW.py +1 -27
  63. orangecontrib/tomwer/widgets/visualization/SinogramViewerOW.py +1 -27
  64. orangecontrib/tomwer/widgets/visualization/SliceStackOW.py +2 -28
  65. tomwer/__init__.py +3 -28
  66. tomwer/__main__.py +8 -4
  67. tomwer/app/__init__.py +2 -0
  68. tomwer/app/axis.py +8 -7
  69. tomwer/app/canvas.py +23 -29
  70. tomwer/app/canvas_launcher/config.py +14 -102
  71. tomwer/app/canvas_launcher/environ.py +5 -8
  72. tomwer/app/canvas_launcher/mainwindow.py +175 -69
  73. tomwer/app/canvas_launcher/splash.py +1 -3
  74. tomwer/app/canvas_launcher/utils.py +47 -0
  75. tomwer/app/canvas_launcher/widgetsscheme.py +3 -10
  76. tomwer/app/diffframe.py +2 -0
  77. tomwer/app/imagekeyeditor.py +2 -1
  78. tomwer/app/imagekeyupgrader.py +2 -0
  79. tomwer/app/multicor.py +5 -2
  80. tomwer/app/multipag.py +7 -4
  81. tomwer/app/nabuapp.py +2 -1
  82. tomwer/app/nxtomoeditor.py +17 -12
  83. tomwer/app/patchrawdarkflat.py +2 -0
  84. tomwer/app/radiostack.py +3 -2
  85. tomwer/app/reducedarkflat.py +3 -0
  86. tomwer/app/samplemoved.py +2 -0
  87. tomwer/app/scanviewer.py +2 -0
  88. tomwer/app/sinogramviewer.py +2 -0
  89. tomwer/app/slicestack.py +11 -13
  90. tomwer/app/stitching/common.py +431 -0
  91. tomwer/app/stopdatalistener.py +3 -0
  92. tomwer/app/ystitching.py +26 -0
  93. tomwer/app/zstitching.py +8 -363
  94. tomwer/core/__init__.py +2 -28
  95. tomwer/core/cluster/__init__.py +3 -0
  96. tomwer/core/cluster/cluster.py +10 -26
  97. tomwer/core/futureobject.py +17 -43
  98. tomwer/core/log/__init__.py +2 -0
  99. tomwer/core/log/processlog.py +0 -28
  100. tomwer/core/process/cluster/supervisor.py +52 -34
  101. tomwer/core/process/conditions/filters.py +3 -28
  102. tomwer/core/process/control/datalistener/datalistener.py +7 -75
  103. tomwer/core/process/control/datalistener/rpcserver.py +8 -38
  104. tomwer/core/process/control/datawatcher/datawatcher.py +11 -40
  105. tomwer/core/process/control/datawatcher/datawatcherobserver.py +30 -64
  106. tomwer/core/process/control/datawatcher/datawatcherprocess.py +11 -32
  107. tomwer/core/process/control/datawatcher/edfdwprocess.py +2 -27
  108. tomwer/core/process/control/datawatcher/hdf5dwprocess.py +1 -26
  109. tomwer/core/process/control/datawatcher/status.py +1 -26
  110. tomwer/core/process/control/emailnotifier.py +11 -23
  111. tomwer/core/process/control/nxtomoconcatenate.py +20 -18
  112. tomwer/core/process/control/nxtomomill.py +9 -44
  113. tomwer/core/process/control/scanlist.py +0 -27
  114. tomwer/core/process/control/scantransfer.py +15 -13
  115. tomwer/core/process/control/scanvalidator.py +4 -30
  116. tomwer/core/process/control/{test → tests}/test_concatenate_nxtomos.py +5 -5
  117. tomwer/core/process/control/timer.py +1 -27
  118. tomwer/core/process/control/tomoobjseries.py +12 -0
  119. tomwer/core/process/drac/binning.py +37 -0
  120. tomwer/core/process/drac/dracbase.py +170 -0
  121. tomwer/core/process/drac/gallery.py +109 -0
  122. tomwer/core/process/drac/output.py +12 -0
  123. tomwer/core/process/drac/processeddataset.py +147 -0
  124. tomwer/core/process/drac/publish.py +118 -0
  125. tomwer/core/process/drac/rawdataset.py +142 -0
  126. tomwer/core/process/drac/tests/test_gallery.py +71 -0
  127. tomwer/core/process/drac/tests/test_icat_processed_dataset.py +80 -0
  128. tomwer/core/process/drac/tests/test_icat_raw_dataset.py +90 -0
  129. tomwer/core/process/edit/darkflatpatch.py +1 -28
  130. tomwer/core/process/edit/imagekeyeditor.py +4 -32
  131. tomwer/core/process/edit/nxtomoeditor.py +307 -0
  132. tomwer/core/process/edit/tests/test_darkflatpatch.py +243 -0
  133. tomwer/core/process/edit/tests/test_imagekey_editor.py +99 -0
  134. tomwer/core/process/output.py +9 -2
  135. tomwer/core/process/reconstruction/__init__.py +0 -26
  136. tomwer/core/process/reconstruction/axis/anglemode.py +1 -29
  137. tomwer/core/process/reconstruction/axis/axis.py +63 -111
  138. tomwer/core/process/reconstruction/axis/mode.py +5 -3
  139. tomwer/core/process/reconstruction/axis/params.py +5 -146
  140. tomwer/core/process/reconstruction/axis/projectiontype.py +0 -28
  141. tomwer/core/process/reconstruction/darkref/darkrefs.py +14 -39
  142. tomwer/core/process/reconstruction/darkref/darkrefscopy.py +7 -39
  143. tomwer/core/process/reconstruction/darkref/params.py +1 -28
  144. tomwer/core/process/reconstruction/nabu/castvolume.py +19 -34
  145. tomwer/core/process/reconstruction/nabu/nabucommon.py +18 -43
  146. tomwer/core/process/reconstruction/nabu/nabuscores.py +47 -48
  147. tomwer/core/process/reconstruction/nabu/nabuslices.py +59 -105
  148. tomwer/core/process/reconstruction/nabu/nabuvolume.py +44 -70
  149. tomwer/core/process/reconstruction/nabu/plane.py +10 -0
  150. tomwer/core/process/reconstruction/nabu/settings.py +1 -28
  151. tomwer/core/process/reconstruction/nabu/target.py +0 -28
  152. tomwer/core/process/reconstruction/nabu/test/test_castvolume.py +116 -0
  153. tomwer/core/process/reconstruction/nabu/test/test_nabu_utils.py +277 -0
  154. tomwer/core/process/reconstruction/nabu/test/test_nabunormalization.py +199 -0
  155. tomwer/core/process/reconstruction/nabu/utils.py +11 -60
  156. tomwer/core/process/reconstruction/normalization/normalization.py +2 -32
  157. tomwer/core/process/reconstruction/normalization/params.py +3 -35
  158. tomwer/core/process/reconstruction/output.py +14 -19
  159. tomwer/core/process/reconstruction/paramsbase.py +4 -33
  160. tomwer/core/process/reconstruction/saaxis/params.py +5 -33
  161. tomwer/core/process/reconstruction/saaxis/saaxis.py +18 -47
  162. tomwer/core/process/reconstruction/sadeltabeta/params.py +2 -31
  163. tomwer/core/process/reconstruction/sadeltabeta/sadeltabeta.py +16 -44
  164. tomwer/core/process/reconstruction/scores/params.py +9 -39
  165. tomwer/core/process/reconstruction/scores/scores.py +10 -42
  166. tomwer/core/process/reconstruction/tests/__init__.py +0 -0
  167. tomwer/core/process/reconstruction/tests/test_axis.py +46 -0
  168. tomwer/core/process/reconstruction/tests/test_darkref.py +33 -0
  169. tomwer/core/process/reconstruction/{test → tests}/test_saaxis.py +1 -27
  170. tomwer/core/process/reconstruction/tests/test_sadeltabeta.py +48 -0
  171. tomwer/core/process/script/python.py +1 -27
  172. tomwer/core/process/script/tests/test_script.py +41 -0
  173. tomwer/core/process/stitching/metadataholder.py +5 -4
  174. tomwer/core/process/stitching/nabustitcher.py +35 -5
  175. tomwer/core/process/stitching/tests/test_metadataholder.py +17 -0
  176. tomwer/core/process/task.py +20 -63
  177. tomwer/core/process/tests/__init__.py +0 -0
  178. tomwer/core/process/{test → tests}/test_axis.py +1 -79
  179. tomwer/core/process/{test → tests}/test_conditions.py +1 -28
  180. tomwer/core/process/{test → tests}/test_dark_and_flat.py +1 -27
  181. tomwer/core/process/{test → tests}/test_data_listener.py +1 -27
  182. tomwer/core/process/{test → tests}/test_data_transfer.py +2 -28
  183. tomwer/core/process/{test → tests}/test_data_watcher.py +1 -27
  184. tomwer/core/process/{test → tests}/test_nabu.py +4 -33
  185. tomwer/core/process/{test → tests}/test_normalization.py +1 -26
  186. tomwer/core/process/{test → tests}/test_timer.py +1 -27
  187. tomwer/core/process/utils.py +2 -31
  188. tomwer/core/process/visualization/dataviewer.py +1 -26
  189. tomwer/core/process/visualization/diffviewer.py +1 -26
  190. tomwer/core/process/visualization/imagestackviewer.py +0 -26
  191. tomwer/core/process/visualization/radiostack.py +0 -26
  192. tomwer/core/process/visualization/samplemoved.py +0 -28
  193. tomwer/core/process/visualization/sinogramviewer.py +0 -27
  194. tomwer/core/process/visualization/slicestack.py +0 -28
  195. tomwer/core/process/visualization/tests/test_data_viewer.py +12 -0
  196. tomwer/core/process/visualization/tests/test_diff_viewer.py +12 -0
  197. tomwer/core/process/visualization/tests/test_image_stack_viewer.py +14 -0
  198. tomwer/core/process/visualization/tests/test_radio_stack.py +12 -0
  199. tomwer/core/process/visualization/tests/test_sample_moved.py +14 -0
  200. tomwer/core/process/visualization/tests/test_sinogram_viewer.py +13 -0
  201. tomwer/core/process/visualization/tests/test_slice_stack.py +13 -0
  202. tomwer/core/process/visualization/tests/test_volume_viewer.py +12 -0
  203. tomwer/core/process/visualization/volumeviewer.py +0 -29
  204. tomwer/core/scan/__init__.py +3 -27
  205. tomwer/core/scan/blissscan.py +5 -34
  206. tomwer/core/scan/edfscan.py +19 -53
  207. tomwer/core/scan/hdf5scan.py +2 -2
  208. tomwer/core/scan/nxtomoscan.py +46 -54
  209. tomwer/core/scan/scanbase.py +104 -200
  210. tomwer/core/scan/scanfactory.py +11 -41
  211. tomwer/core/scan/tests/__init__.py +0 -0
  212. tomwer/core/scan/tests/test_edf.py +25 -0
  213. tomwer/core/scan/tests/test_future_scan.py +35 -0
  214. tomwer/core/scan/tests/test_nxtomoscan.py +143 -0
  215. tomwer/core/scan/{test → tests}/test_process_registration.py +1 -28
  216. tomwer/core/settings.py +18 -40
  217. tomwer/core/tests/__init__.py +0 -0
  218. tomwer/core/tests/test_scanutils.py +26 -0
  219. tomwer/core/{test → tests}/test_utils.py +1 -28
  220. tomwer/core/tomwer_object.py +4 -0
  221. tomwer/core/utils/__init__.py +2 -0
  222. tomwer/core/utils/char.py +0 -28
  223. tomwer/core/utils/deprecation.py +12 -38
  224. tomwer/core/utils/dictutils.py +1 -3
  225. tomwer/core/utils/ftseriesutils.py +1 -27
  226. tomwer/core/utils/gpu.py +0 -28
  227. tomwer/core/utils/image.py +8 -39
  228. tomwer/core/utils/locker.py +1 -28
  229. tomwer/core/utils/logconfig.py +0 -27
  230. tomwer/core/utils/normalization.py +4 -31
  231. tomwer/core/utils/nxtomoutils.py +8 -38
  232. tomwer/core/utils/resource.py +0 -26
  233. tomwer/core/utils/scanutils.py +23 -52
  234. tomwer/core/utils/slurm.py +7 -30
  235. tomwer/core/utils/spec.py +6 -6
  236. tomwer/core/utils/tests/__init__.py +0 -0
  237. tomwer/core/utils/tests/test_image.py +30 -0
  238. tomwer/core/utils/tests/test_nxtomo.py +38 -0
  239. tomwer/core/utils/tests/test_scan_utils.py +46 -0
  240. tomwer/core/utils/tests/test_time.py +6 -0
  241. tomwer/core/utils/threads.py +0 -26
  242. tomwer/core/utils/time.py +0 -27
  243. tomwer/core/volume/__init__.py +4 -0
  244. tomwer/core/volume/edfvolume.py +1 -28
  245. tomwer/core/volume/hdf5volume.py +1 -28
  246. tomwer/core/volume/jp2kvolume.py +1 -27
  247. tomwer/core/volume/rawvolume.py +1 -28
  248. tomwer/core/volume/tests/test_volumes.py +21 -0
  249. tomwer/core/volume/tiffvolume.py +1 -28
  250. tomwer/core/volume/volumebase.py +5 -0
  251. tomwer/core/volume/volumefactory.py +7 -33
  252. tomwer/gui/__init__.py +0 -28
  253. tomwer/gui/cluster/__init__.py +2 -0
  254. tomwer/gui/cluster/slurm.py +297 -95
  255. tomwer/gui/cluster/supervisor.py +1 -27
  256. tomwer/gui/cluster/tests/__init__.py +0 -0
  257. tomwer/gui/cluster/{test → tests}/test_cluster.py +21 -26
  258. tomwer/gui/cluster/{test → tests}/test_supervisor.py +1 -27
  259. tomwer/gui/conditions/__init__.py +2 -0
  260. tomwer/gui/conditions/filter.py +1 -26
  261. tomwer/gui/configuration/__init__.py +2 -0
  262. tomwer/gui/control/__init__.py +2 -0
  263. tomwer/gui/control/actions.py +2 -28
  264. tomwer/gui/control/datadiscovery.py +4 -3
  265. tomwer/gui/control/datalist.py +64 -69
  266. tomwer/gui/control/datalistener.py +1 -39
  267. tomwer/gui/control/datareacheractions.py +1 -28
  268. tomwer/gui/control/datatransfert.py +2 -29
  269. tomwer/gui/control/datavalidator.py +3 -37
  270. tomwer/gui/control/datawatcher/__init__.py +0 -28
  271. tomwer/gui/control/datawatcher/configuration.py +1 -28
  272. tomwer/gui/control/datawatcher/datawatcher.py +3 -32
  273. tomwer/gui/control/datawatcher/datawatcherobserver.py +2 -28
  274. tomwer/gui/control/history.py +5 -35
  275. tomwer/gui/control/nxtomomill.py +3 -30
  276. tomwer/gui/control/observations.py +61 -55
  277. tomwer/gui/control/reducedarkflatselector.py +24 -20
  278. tomwer/gui/control/scanselectorwidget.py +2 -28
  279. tomwer/gui/control/selectorwidgetbase.py +17 -17
  280. tomwer/gui/control/series/__init__.py +0 -0
  281. tomwer/gui/control/{serie/seriecreator.py → series/seriescreator.py} +214 -235
  282. tomwer/gui/control/series/serieswaiter.py +0 -0
  283. tomwer/gui/control/series/test/test_creator.py +424 -0
  284. tomwer/gui/control/series/test/test_nxtomo_concatenate.py +21 -0
  285. tomwer/gui/control/singletomoobj.py +1 -1
  286. tomwer/gui/control/tests/__init__.py +0 -0
  287. tomwer/gui/control/tests/test_datalist.py +47 -0
  288. tomwer/gui/control/{test → tests}/test_datalistener.py +1 -28
  289. tomwer/gui/control/tests/test_datavalidator.py +27 -0
  290. tomwer/gui/control/{test → tests}/test_inputwidget.py +1 -27
  291. tomwer/gui/control/tests/test_process_manager.py +38 -0
  292. tomwer/gui/control/tests/test_scan_observations.py +23 -0
  293. tomwer/gui/control/tests/test_scanselector.py +42 -0
  294. tomwer/gui/control/{test → tests}/test_scanvalidator.py +1 -27
  295. tomwer/gui/control/{test → tests}/test_volume_dialog.py +2 -30
  296. tomwer/gui/control/{test → tests}/test_volumeselector.py +1 -27
  297. tomwer/gui/control/volumeselectorwidget.py +2 -30
  298. tomwer/gui/dataportal/__init__.py +2 -0
  299. tomwer/gui/{icat → dataportal}/createscreenshots.py +3 -2
  300. tomwer/gui/dataportal/gallery.py +133 -0
  301. tomwer/gui/dataportal/outputformat.py +0 -0
  302. tomwer/gui/dataportal/publish.py +96 -0
  303. tomwer/gui/dataportal/tests/test_create_screenshots_gui.py +23 -0
  304. tomwer/gui/dataportal/tests/test_gallery_gui.py +21 -0
  305. tomwer/gui/debugtools/__init__.py +2 -0
  306. tomwer/gui/debugtools/datasetgenerator.py +1 -30
  307. tomwer/gui/debugtools/objectinspector.py +1 -29
  308. tomwer/gui/dialog/QDataDialog.py +89 -0
  309. tomwer/gui/{qfolderdialog.py → dialog/QVolumeDialog.py} +8 -107
  310. tomwer/gui/dialog/__init__.py +1 -0
  311. tomwer/gui/edit/__init__.py +2 -0
  312. tomwer/gui/edit/dkrfpatch.py +52 -87
  313. tomwer/gui/edit/imagekeyeditor.py +18 -54
  314. tomwer/gui/edit/nxtomoeditor.py +113 -300
  315. tomwer/gui/edit/nxtomowarmer.py +3 -2
  316. tomwer/gui/edit/tests/__init__.py +0 -0
  317. tomwer/gui/edit/{test → tests}/test_dkrf_patch.py +3 -29
  318. tomwer/gui/edit/{test → tests}/test_image_key_editor.py +1 -27
  319. tomwer/gui/edit/{test → tests}/test_nx_editor.py +45 -23
  320. tomwer/gui/icons.py +28 -66
  321. tomwer/gui/illustrations.py +4 -34
  322. tomwer/gui/imagefromfile.py +5 -30
  323. tomwer/gui/metadataloader.py +36 -0
  324. tomwer/gui/qconfigfile.py +3 -0
  325. tomwer/gui/qlefilesystem.py +3 -0
  326. tomwer/gui/reconstruction/__init__.py +2 -0
  327. tomwer/gui/reconstruction/axis/AxisMainWindow.py +264 -0
  328. tomwer/gui/reconstruction/axis/AxisOptionsWidget.py +153 -0
  329. tomwer/gui/reconstruction/axis/AxisSettingsWidget.py +776 -0
  330. tomwer/gui/reconstruction/axis/AxisWidget.py +526 -0
  331. tomwer/gui/reconstruction/axis/CalculationWidget.py +374 -0
  332. tomwer/gui/reconstruction/axis/CompareImages.py +11 -44
  333. tomwer/gui/reconstruction/axis/ControlWidget.py +277 -0
  334. tomwer/gui/reconstruction/axis/InputWidget.py +491 -0
  335. tomwer/gui/reconstruction/axis/ManualFramesSelection.py +168 -0
  336. tomwer/gui/reconstruction/axis/__init__.py +2 -2
  337. tomwer/gui/reconstruction/darkref/__init__.py +0 -27
  338. tomwer/gui/reconstruction/darkref/darkrefcopywidget.py +5 -34
  339. tomwer/gui/reconstruction/darkref/darkrefwidget.py +1 -27
  340. tomwer/gui/reconstruction/nabu/castvolume.py +40 -59
  341. tomwer/gui/reconstruction/nabu/check.py +7 -33
  342. tomwer/gui/reconstruction/nabu/nabuconfig/base.py +7 -34
  343. tomwer/gui/reconstruction/nabu/nabuconfig/ctf.py +6 -5
  344. tomwer/gui/reconstruction/nabu/nabuconfig/nabuconfig.py +10 -69
  345. tomwer/gui/reconstruction/nabu/nabuconfig/output.py +3 -47
  346. tomwer/gui/reconstruction/nabu/nabuconfig/phase.py +54 -36
  347. tomwer/gui/reconstruction/nabu/nabuconfig/preprocessing.py +103 -54
  348. tomwer/gui/reconstruction/nabu/nabuconfig/reconstruction.py +116 -65
  349. tomwer/gui/reconstruction/nabu/nabuflow.py +31 -61
  350. tomwer/gui/reconstruction/nabu/platform.py +94 -0
  351. tomwer/gui/reconstruction/nabu/slices.py +81 -45
  352. tomwer/gui/reconstruction/nabu/slurm.py +1 -27
  353. tomwer/gui/reconstruction/nabu/test/test_cast_volume.py +82 -0
  354. tomwer/gui/reconstruction/nabu/test/test_check.py +66 -0
  355. tomwer/gui/reconstruction/nabu/test/test_ctf.py +46 -0
  356. tomwer/gui/reconstruction/nabu/test/test_helical.py +21 -0
  357. tomwer/gui/reconstruction/nabu/test/test_nabu_preprocessing.py +81 -0
  358. tomwer/gui/reconstruction/nabu/volume.py +62 -90
  359. tomwer/gui/reconstruction/normalization/intensity.py +5 -32
  360. tomwer/gui/reconstruction/normalization/test/test_intensity.py +89 -0
  361. tomwer/gui/reconstruction/saaxis/corrangeselector.py +16 -49
  362. tomwer/gui/reconstruction/saaxis/dimensionwidget.py +56 -96
  363. tomwer/gui/reconstruction/saaxis/saaxis.py +17 -38
  364. tomwer/gui/reconstruction/saaxis/sliceselector.py +8 -39
  365. tomwer/gui/reconstruction/sadeltabeta/saadeltabeta.py +19 -37
  366. tomwer/gui/reconstruction/scores/control.py +2 -30
  367. tomwer/gui/reconstruction/scores/scoreplot.py +19 -48
  368. tomwer/gui/reconstruction/tests/__init__.py +0 -0
  369. tomwer/gui/reconstruction/{test → tests}/test_axis.py +23 -49
  370. tomwer/gui/reconstruction/{test → tests}/test_nabu.py +8 -31
  371. tomwer/gui/reconstruction/{test → tests}/test_saaxis.py +10 -37
  372. tomwer/gui/reconstruction/{test → tests}/test_sadeltabeta.py +1 -26
  373. tomwer/gui/samplemoved/__init__.py +2 -30
  374. tomwer/gui/samplemoved/selectiontable.py +3 -33
  375. tomwer/gui/settings.py +7 -0
  376. tomwer/gui/stackplot.py +33 -661
  377. tomwer/gui/stacks.py +261 -135
  378. tomwer/gui/stitching/SingleAxisStitchingWidget.py +326 -0
  379. tomwer/gui/stitching/StitchingOptionsWidget.py +438 -0
  380. tomwer/gui/stitching/StitchingWindow.py +586 -0
  381. tomwer/gui/stitching/__init__.py +2 -0
  382. tomwer/gui/stitching/alignment.py +90 -0
  383. tomwer/gui/stitching/axisorderedlist.py +44 -34
  384. tomwer/gui/stitching/config/axisparams.py +23 -11
  385. tomwer/gui/stitching/config/output.py +6 -5
  386. tomwer/gui/stitching/config/positionoveraxis.py +313 -51
  387. tomwer/gui/stitching/config/stitchingstrategies.py +22 -16
  388. tomwer/gui/stitching/config/tests/test_axisparams.py +25 -0
  389. tomwer/gui/stitching/config/tomoobjdetails.py +3 -5
  390. tomwer/gui/stitching/normalization.py +1 -0
  391. tomwer/gui/stitching/preview.py +59 -0
  392. tomwer/gui/stitching/singleaxis.py +57 -0
  393. tomwer/gui/stitching/stitchandbackground.py +3 -2
  394. tomwer/gui/stitching/stitching_preview.py +44 -36
  395. tomwer/gui/stitching/stitching_raw.py +5 -3
  396. tomwer/gui/stitching/tests/test_ZStitchingWindow.py +88 -0
  397. tomwer/gui/stitching/tests/test_axis_ordered_list.py +21 -0
  398. tomwer/gui/stitching/tests/test_normalization.py +27 -0
  399. tomwer/gui/stitching/tests/test_preview.py +68 -0
  400. tomwer/gui/stitching/tests/test_stitching_raw.py +110 -0
  401. tomwer/gui/stitching/tests/utils.py +92 -0
  402. tomwer/gui/stitching/utils.py +14 -0
  403. tomwer/gui/stitching/z_stitching/fineestimation.py +4 -32
  404. tomwer/gui/stitching/z_stitching/tests/test_fine_estimation.py +35 -0
  405. tomwer/gui/stitching/z_stitching/tests/test_raw_estimation.py +215 -0
  406. tomwer/gui/stitching/z_stitching/tests/test_stitching_window.py +51 -0
  407. tomwer/gui/tests/__init__.py +0 -0
  408. tomwer/gui/tests/test_axis_gui.py +27 -0
  409. tomwer/gui/{test → tests}/test_qfolder_dialog.py +1 -1
  410. tomwer/gui/utils/RangeWidget.py +44 -0
  411. tomwer/gui/utils/buttons.py +4 -3
  412. tomwer/gui/utils/completer.py +2 -33
  413. tomwer/gui/utils/flow.py +11 -40
  414. tomwer/gui/utils/gpu.py +60 -0
  415. tomwer/gui/utils/illustrations.py +1 -26
  416. tomwer/gui/utils/inputwidget.py +35 -73
  417. tomwer/gui/utils/lineselector/lineselector.py +9 -46
  418. tomwer/gui/utils/loadingmode.py +81 -0
  419. tomwer/gui/utils/qt_utils.py +9 -0
  420. tomwer/gui/utils/sandboxes.py +1 -26
  421. tomwer/gui/utils/scandescription.py +2 -31
  422. tomwer/gui/utils/scrollarea.py +6 -55
  423. tomwer/gui/utils/slider.py +4 -28
  424. tomwer/gui/utils/splashscreen.py +0 -28
  425. tomwer/gui/utils/step.py +14 -13
  426. tomwer/gui/utils/tests/test_completer.py +41 -0
  427. tomwer/gui/utils/tests/test_line_selector.py +21 -0
  428. tomwer/gui/utils/tests/test_splashscreen.py +8 -0
  429. tomwer/gui/utils/tests/test_vignettes.py +68 -0
  430. tomwer/gui/utils/unitsystem.py +15 -69
  431. tomwer/gui/utils/utils.py +4 -5
  432. tomwer/gui/utils/vignettes.py +10 -41
  433. tomwer/gui/utils/waiterthread.py +0 -26
  434. tomwer/gui/visualization/__init__.py +2 -0
  435. tomwer/gui/visualization/dataviewer.py +68 -421
  436. tomwer/gui/visualization/diffviewer/diffviewer.py +2 -30
  437. tomwer/gui/visualization/diffviewer/shiftwidget.py +4 -29
  438. tomwer/gui/visualization/fullscreenplot.py +5 -5
  439. tomwer/gui/visualization/imagestack.py +403 -0
  440. tomwer/gui/visualization/nxtomometadata.py +0 -4
  441. tomwer/gui/visualization/reconstructionparameters.py +14 -32
  442. tomwer/gui/visualization/scanoverview.py +33 -66
  443. tomwer/gui/visualization/sinogramviewer.py +2 -28
  444. tomwer/gui/visualization/test/__init__.py +0 -28
  445. tomwer/gui/visualization/test/test_dataviewer.py +1 -28
  446. tomwer/gui/visualization/test/test_diffviewer.py +1 -28
  447. tomwer/gui/visualization/test/test_nx_tomo_metadata_viewer.py +0 -5
  448. tomwer/gui/visualization/test/test_reconstruction_parameters.py +1 -27
  449. tomwer/gui/visualization/test/test_sinogramviewer.py +1 -28
  450. tomwer/gui/visualization/test/test_stacks.py +184 -115
  451. tomwer/gui/visualization/test/test_volumeviewer.py +3 -2
  452. tomwer/gui/visualization/tomoobjoverview.py +2 -2
  453. tomwer/gui/visualization/volumeoverview.py +3 -2
  454. tomwer/gui/visualization/volumeviewer.py +47 -43
  455. tomwer/io/__init__.py +2 -0
  456. tomwer/io/utils/h5pyutils.py +1 -27
  457. tomwer/io/utils/test/test_raw_and_processed_data.py +10 -0
  458. tomwer/io/utils/test/test_utils.py +67 -0
  459. tomwer/io/utils/utils.py +2 -31
  460. tomwer/resources/__init__.py +13 -33
  461. tomwer/resources/gui/icons/edit_downstream.svg +114 -0
  462. tomwer/resources/gui/icons/edit_upstream.svg +112 -0
  463. tomwer/resources/gui/icons/free_edition.svg +23 -0
  464. tomwer/resources/gui/icons/icat_gallery_opts.png +0 -0
  465. tomwer/resources/gui/icons/icat_gallery_opts.svg +80 -0
  466. tomwer/resources/gui/icons/search.png +0 -0
  467. tomwer/resources/gui/icons/search.svg +23 -0
  468. tomwer/resources/gui/icons/warning.png +0 -0
  469. tomwer/synctools/__init__.py +2 -0
  470. tomwer/synctools/axis.py +1 -27
  471. tomwer/synctools/darkref.py +1 -26
  472. tomwer/synctools/datalistener.py +1 -27
  473. tomwer/synctools/datatransfert.py +2 -27
  474. tomwer/synctools/imageloaderthread.py +1 -28
  475. tomwer/synctools/rsyncmanager.py +1 -25
  476. tomwer/synctools/saaxis.py +1 -26
  477. tomwer/synctools/sadeltabeta.py +1 -26
  478. tomwer/synctools/stacks/control/datalistener.py +1 -26
  479. tomwer/synctools/stacks/processingstack.py +4 -33
  480. tomwer/synctools/stacks/reconstruction/axis.py +2 -31
  481. tomwer/synctools/stacks/reconstruction/castvolume.py +12 -43
  482. tomwer/synctools/stacks/reconstruction/dkrefcopy.py +3 -26
  483. tomwer/synctools/stacks/reconstruction/nabu.py +1 -26
  484. tomwer/synctools/stacks/reconstruction/normalization.py +1 -26
  485. tomwer/synctools/stacks/reconstruction/saaxis.py +1 -26
  486. tomwer/synctools/stacks/reconstruction/sadeltabeta.py +1 -26
  487. tomwer/synctools/tests/__init__.py +0 -0
  488. tomwer/synctools/{test → tests}/test_darkRefs.py +16 -40
  489. tomwer/synctools/{test → tests}/test_foldertransfer.py +2 -33
  490. tomwer/synctools/utils/scanstages.py +2 -31
  491. tomwer/tests/__init__.py +1 -0
  492. tomwer/tests/app/test_stitching.py +95 -0
  493. tomwer/tests/datasets.py +1 -5
  494. tomwer/tests/orangecontrib/tomwer/widgets/cluster/tests/test_future_supervisorow.py +48 -0
  495. tomwer/tests/orangecontrib/tomwer/widgets/cluster/tests/test_slurm_clusterow.py +40 -0
  496. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_advancement.py +8 -0
  497. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_data_validator.py +55 -0
  498. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_datadiscovery.py +129 -0
  499. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_datalistener.py +111 -0
  500. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_dataselector.py +69 -0
  501. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_datawatcher.py +411 -0
  502. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_emailow.py +29 -0
  503. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_notifier.py +24 -0
  504. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_nxtomo_concatenate_ow.py +64 -0
  505. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_nxtomomill.py +133 -0
  506. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_reduce_dark_flat_selector.py +40 -0
  507. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_singletomoobj.py +40 -0
  508. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_timerow.py +25 -0
  509. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_tomoobj_series.py +96 -0
  510. tomwer/tests/orangecontrib/tomwer/widgets/control/tests/test_volume_selector.py +69 -0
  511. orangecontrib/tomwer/widgets/edit/test/test_image_key_editor.py → tomwer/tests/orangecontrib/tomwer/widgets/debugtools/tests/test_dataset_generator.py +17 -16
  512. tomwer/tests/orangecontrib/tomwer/widgets/debugtools/tests/test_object_inspector.py +36 -0
  513. {orangecontrib/tomwer/widgets/edit/test → tomwer/tests/orangecontrib/tomwer/widgets/edit/tests}/test_dark_flat_patch.py +1 -27
  514. tomwer/tests/orangecontrib/tomwer/widgets/edit/tests/test_image_key_editor.py +30 -0
  515. tomwer/tests/orangecontrib/tomwer/widgets/edit/tests/test_nxtomo_editor.py +138 -0
  516. tomwer/tests/orangecontrib/tomwer/widgets/other/tests/test_pythonscript.py +31 -0
  517. tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_axis.py +215 -0
  518. tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_cast_volumeow.py +58 -0
  519. tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_dark_refs_widget.py +136 -0
  520. tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_delta_beta_selector.py +15 -0
  521. tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_i_norm.py +200 -0
  522. tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_nabu_helical_prepare_weights_double.py +20 -0
  523. tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_nabu_volume.py +74 -0
  524. tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_nabu_widget.py +107 -0
  525. tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_sa_delta_beta.py +194 -0
  526. tomwer/tests/orangecontrib/tomwer/widgets/reconstruction/tests/test_saaxis.py +194 -0
  527. tomwer/tests/orangecontrib/tomwer/widgets/stitching/tests/test_zstitching.py +313 -0
  528. tomwer/tests/orangecontrib/tomwer/widgets/tests/test_conditions.py +85 -0
  529. tomwer/tests/orangecontrib/tomwer/widgets/tests/test_darkref.py +225 -0
  530. tomwer/tests/orangecontrib/tomwer/widgets/tests/test_foldertransfert.py +105 -0
  531. tomwer/tests/orangecontrib/tomwer/widgets/visualization/tests/test_dataviewerow.py +57 -0
  532. tomwer/tests/orangecontrib/tomwer/widgets/visualization/tests/test_diffviewerow.py +39 -0
  533. tomwer/tests/orangecontrib/tomwer/widgets/visualization/tests/test_nxtomo_metadata_viewer.py +29 -0
  534. tomwer/tests/orangecontrib/tomwer/widgets/visualization/tests/test_radio_stackow.py +31 -0
  535. tomwer/tests/orangecontrib/tomwer/widgets/visualization/tests/test_sample_movedow.py +46 -0
  536. tomwer/tests/orangecontrib/tomwer/widgets/visualization/tests/test_sinogram_viewerow.py +31 -0
  537. tomwer/tests/orangecontrib/tomwer/widgets/visualization/tests/test_slice_stackow.py +31 -0
  538. tomwer/tests/orangecontrib/tomwer/widgets/visualization/tests/test_volume_viewerow.py +32 -0
  539. tomwer/tests/test_ewoks/test_conversion.py +104 -0
  540. tomwer/tests/test_ewoks/test_single_node_execution.py +87 -0
  541. tomwer/tests/test_ewoks/test_workflows.py +138 -0
  542. tomwer/utils.py +11 -39
  543. tomwer/version.py +3 -3
  544. {tomwer-1.3.27.dist-info → tomwer-1.4.0rc0.dist-info}/LICENSE +3 -3
  545. tomwer-1.4.0rc0.dist-info/METADATA +337 -0
  546. tomwer-1.4.0rc0.dist-info/RECORD +909 -0
  547. {tomwer-1.3.27.dist-info → tomwer-1.4.0rc0.dist-info}/WHEEL +1 -1
  548. {tomwer-1.3.27.dist-info → tomwer-1.4.0rc0.dist-info}/entry_points.txt +1 -0
  549. orangecontrib/tomwer/widgets/control/DataListOW.py +0 -129
  550. orangecontrib/tomwer/widgets/control/TomoObjSerieOW.py +0 -86
  551. orangecontrib/tomwer/widgets/control/VolumeSymLinkOW.py +0 -182
  552. orangecontrib/tomwer/widgets/edit/test/test_nxtomo_editor.py +0 -141
  553. orangecontrib/tomwer/widgets/icat/PublishProcessedDataOW.py +0 -115
  554. orangecontrib/tomwer/widgets/icat/RawDataScreenshotCreatorOW.py +0 -98
  555. orangecontrib/tomwer/widgets/icat/SaveToGalleryAndPublishOW.py +0 -129
  556. orangecontrib/tomwer/widgets/icat/icons/add_gallery.png +0 -0
  557. orangecontrib/tomwer/widgets/icat/icons/add_gallery.svg +0 -82
  558. orangecontrib/tomwer/widgets/icat/icons/raw_screenshots.png +0 -0
  559. orangecontrib/tomwer/widgets/icat/icons/raw_screenshots.svg +0 -143
  560. orangecontrib/tomwer/widgets/visualization/LivesliceOW.py +0 -87
  561. orangecontrib/tomwer/widgets/visualization/icons/liveslice.png +0 -0
  562. orangecontrib/tomwer/widgets/visualization/icons/liveslice.svg +0 -110
  563. tomwer/core/log/logger.py +0 -130
  564. tomwer/core/process/control/test/test_volume_link.py +0 -74
  565. tomwer/core/process/control/tomoobjserie.py +0 -12
  566. tomwer/core/process/control/volumesymlink.py +0 -200
  567. tomwer/core/process/icat/createscreenshots.py +0 -100
  568. tomwer/core/process/icat/gallery.py +0 -377
  569. tomwer/core/process/icat/icatbase.py +0 -36
  570. tomwer/core/process/icat/publish.py +0 -228
  571. tomwer/core/process/icat/screenshots.py +0 -27
  572. tomwer/core/process/reconstruction/test/test_darkref.py +0 -60
  573. tomwer/core/process/reconstruction/test/test_sadeltabeta.py +0 -74
  574. tomwer/core/process/visualization/liveslice.py +0 -6
  575. tomwer/core/progress.py +0 -100
  576. tomwer/core/scan/test/test_edf.py +0 -53
  577. tomwer/core/scan/test/test_future_scan.py +0 -61
  578. tomwer/core/scan/test/test_h5.py +0 -96
  579. tomwer/core/test/test_scanutils.py +0 -53
  580. tomwer/gui/control/emailnotifier.py +0 -174
  581. tomwer/gui/control/serie/seriewaiter.py +0 -28
  582. tomwer/gui/control/test/__init__.py +0 -28
  583. tomwer/gui/control/test/test_datalist.py +0 -96
  584. tomwer/gui/control/test/test_datavalidator.py +0 -54
  585. tomwer/gui/control/test/test_email.py +0 -35
  586. tomwer/gui/control/test/test_process_manager.py +0 -65
  587. tomwer/gui/control/test/test_scanselector.py +0 -67
  588. tomwer/gui/edit/test/__init__.py +0 -28
  589. tomwer/gui/icat/gallery.py +0 -214
  590. tomwer/gui/icat/publish.py +0 -187
  591. tomwer/gui/reconstruction/axis/axis.py +0 -733
  592. tomwer/gui/reconstruction/axis/radioaxis.py +0 -2467
  593. tomwer/gui/stitching/stitching.py +0 -1388
  594. tomwer/gui/test/__init__.py +0 -28
  595. tomwer/gui/test/test_axis_gui.py +0 -34
  596. tomwer/synctools/stacks/edit/darkflatpatch.py +0 -169
  597. tomwer/synctools/stacks/edit/imagekeyeditor.py +0 -135
  598. tomwer/third_part/WaitingOverlay.py +0 -110
  599. tomwer-1.3.27-py3.11-nspkg.pth +0 -1
  600. tomwer-1.3.27.dist-info/METADATA +0 -292
  601. tomwer-1.3.27.dist-info/RECORD +0 -785
  602. tomwer-1.3.27.dist-info/namespace_packages.txt +0 -1
  603. /orangecontrib/tomwer/{widgets/edit/test → tests}/__init__.py +0 -0
  604. {tomwer/core/process/control/test → orangecontrib/tomwer/tutorials/id16b}/__init__.py +0 -0
  605. {tomwer/core/process/icat → orangecontrib/tomwer/widgets/cluster/tests}/__init__.py +0 -0
  606. /orangecontrib/tomwer/widgets/control/icons/{tomoobjserie.png → tomoobjseries.png} +0 -0
  607. {tomwer/core/process/reconstruction/test → orangecontrib/tomwer/widgets/control/tests}/__init__.py +0 -0
  608. /orangecontrib/tomwer/widgets/{icat → dataportal}/icons/publish_processed_data.png +0 -0
  609. /orangecontrib/tomwer/widgets/{icat → dataportal}/icons/publish_processed_data.svg +0 -0
  610. {tomwer/core/process/test → orangecontrib/tomwer/widgets/debugtools/tests}/__init__.py +0 -0
  611. {tomwer/core/scan/test → orangecontrib/tomwer/widgets/edit/tests}/__init__.py +0 -0
  612. {tomwer/core/test → orangecontrib/tomwer/widgets/other/tests}/__init__.py +0 -0
  613. {tomwer/gui/cluster/test → orangecontrib/tomwer/widgets/reconstruction/tests}/__init__.py +0 -0
  614. {tomwer/gui/control/serie → orangecontrib/tomwer/widgets/stitching/tests}/__init__.py +0 -0
  615. {tomwer/gui/icat → orangecontrib/tomwer/widgets/tests}/__init__.py +0 -0
  616. {tomwer/gui/reconstruction/test → orangecontrib/tomwer/widgets/visualization/tests}/__init__.py +0 -0
  617. /tomwer/{synctools/stacks/edit → app/stitching}/__init__.py +0 -0
  618. /tomwer/{synctools/test → core/process/control/tests}/__init__.py +0 -0
  619. /tomwer/core/process/control/{test → tests}/test_email.py +0 -0
  620. /tomwer/core/process/control/{test → tests}/test_h52nx_process.py +0 -0
  621. /tomwer/{third_part → core/process/drac}/__init__.py +0 -0
  622. /tomwer/core/process/reconstruction/{test → tests}/test_axis_params.py +0 -0
  623. /tomwer/core/process/reconstruction/{test → tests}/test_darkref_copy.py +0 -0
  624. /tomwer/core/process/reconstruction/{test → tests}/test_paramsbase.py +0 -0
  625. /tomwer/core/process/reconstruction/{test → tests}/test_utils.py +0 -0
  626. /tomwer/core/scan/{test → tests}/test_scan.py +0 -0
  627. /tomwer/gui/control/{serie → series}/nxtomoconcatenate.py +0 -0
  628. /tomwer/gui/control/{test → tests}/test_datadiscovery.py +0 -0
  629. /tomwer/gui/control/{test → tests}/test_reducedarkflat_selector.py +0 -0
  630. /tomwer/gui/control/{test → tests}/test_single_tomo_obj.py +0 -0
  631. {orangecontrib/tomwer/widgets/edit/test → tomwer/tests/orangecontrib/tomwer/widgets/edit/tests}/test_image_key_upgrader.py +0 -0
  632. {tomwer-1.3.27.dist-info → tomwer-1.4.0rc0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,64 @@
1
+ import os
2
+ from tomoscan.series import Series
3
+ import pickle
4
+
5
+ from ewoksorange.bindings.qtapp import QtEvent
6
+
7
+ from orangecanvas.scheme.readwrite import literal_dumps
8
+
9
+ from tomwer.tests.conftest import qtapp # noqa F401
10
+ from tomwer.core.utils.scanutils import MockNXtomo
11
+
12
+ from orangecontrib.tomwer.widgets.control.NXtomoConcatenate import NXtomoConcatenateOW
13
+
14
+
15
+ def test_NabuHelicalPrepareWeightsDoubleOW(
16
+ qtapp, # noqa F811
17
+ tmp_path,
18
+ ):
19
+ """simple test of the _DeltaBetaSelectorDialog"""
20
+ widget = NXtomoConcatenateOW()
21
+ widget._loadSettings()
22
+ # test settings serialization
23
+ pickle.dumps(widget._ewoks_default_inputs)
24
+ literal_dumps(widget._ewoks_default_inputs)
25
+
26
+ scan_1 = MockNXtomo(
27
+ scan_path=os.path.join(tmp_path, "scan1"),
28
+ n_proj=10,
29
+ n_ini_proj=10,
30
+ scan_range=180,
31
+ dim=20,
32
+ energy=12.3,
33
+ ).scan
34
+ scan_2 = MockNXtomo(
35
+ scan_path=os.path.join(tmp_path, "scan2"),
36
+ n_proj=10,
37
+ n_ini_proj=10,
38
+ scan_range=180,
39
+ dim=20,
40
+ energy=12.3,
41
+ ).scan
42
+
43
+ output_scan_file = os.path.join(tmp_path, "concatenation.nx")
44
+ assert not os.path.exists(output_scan_file)
45
+
46
+ widget.widget.setConfiguration(
47
+ {
48
+ "output_file": output_scan_file,
49
+ }
50
+ )
51
+
52
+ # process task
53
+ finished = QtEvent()
54
+
55
+ def finished_callback():
56
+ finished.set()
57
+
58
+ executor = widget.task_executor_queue
59
+ executor.sigComputationEnded.connect(finished_callback)
60
+ widget._process_series(series=Series(iterable=[scan_1, scan_2]))
61
+
62
+ # wait until processing is finished
63
+ assert finished.wait(timeout=10)
64
+ assert os.path.exists(output_scan_file)
@@ -0,0 +1,133 @@
1
+ # coding: utf-8
2
+ from __future__ import annotations
3
+
4
+ import gc
5
+ import os
6
+ import shutil
7
+ import tempfile
8
+ import time
9
+
10
+ from orangecanvas.scheme.readwrite import literal_dumps
11
+ from processview.core.manager.manager import DatasetState, ProcessManager
12
+ from silx.gui import qt
13
+ from silx.gui.utils.testutils import TestCaseQt
14
+ from tomoscan.esrf.scan.mock import MockEDF
15
+
16
+ from orangecontrib.tomwer.widgets.control.EDF2NXTomomillOW import EDF2NXOW
17
+ from orangecontrib.tomwer.widgets.control.NXTomomillOW import NXTomomillOW
18
+ from tomwer.core.scan.blissscan import BlissScan
19
+ from tomwer.core.scan.nxtomoscan import NXtomoScan
20
+ from tomwer.core.utils.scanutils import MockBlissAcquisition
21
+
22
+
23
+ class TestNXTomomillOw(TestCaseQt):
24
+ """
25
+ Test the NXTomomillOW widget
26
+ """
27
+
28
+ def setUp(self):
29
+ super().setUp()
30
+ self.tempdir = tempfile.mkdtemp()
31
+ mock = MockBlissAcquisition(
32
+ n_sample=1,
33
+ n_sequence=1,
34
+ n_scan_per_sequence=3,
35
+ n_darks=2,
36
+ n_flats=2,
37
+ output_dir=self.tempdir,
38
+ )
39
+ self.scan = BlissScan(
40
+ master_file=mock.samples[0].sample_file,
41
+ proposal_file=mock.proposal_file,
42
+ entry="1.1",
43
+ )
44
+ self.widget = NXTomomillOW()
45
+
46
+ def tearDown(self):
47
+ self.widget.setAttribute(qt.Qt.WA_DeleteOnClose)
48
+ self.widget.close()
49
+ self.widget = None
50
+ shutil.rmtree(self.tempdir)
51
+ gc.collect()
52
+
53
+ def test(self):
54
+ self.widget.add(self.scan.master_file)
55
+ self.widget._sendAll()
56
+
57
+ def test_literal_dumps(self):
58
+ self.widget._saveNXTomoCfgFile(cfg_file="")
59
+ literal_dumps(self.widget._ewoks_default_inputs)
60
+
61
+
62
+ class TestEDF2NXOW(TestCaseQt):
63
+ """
64
+ Test the EDF2NXOW widget
65
+ """
66
+
67
+ def setUp(self):
68
+ super().setUp()
69
+ self.tempdir = tempfile.mkdtemp()
70
+ self._edf_folder_1 = os.path.join(self.tempdir, "edf_scan_1")
71
+ self._edf_folder_2 = os.path.join(self.tempdir, "edf_scan_2_")
72
+ MockEDF(
73
+ scan_path=self._edf_folder_1,
74
+ n_radio=10,
75
+ n_ini_radio=10,
76
+ n_extra_radio=0,
77
+ dim=128,
78
+ dark_n=1,
79
+ flat_n=1,
80
+ )
81
+ MockEDF(
82
+ scan_path=self._edf_folder_2,
83
+ n_radio=10,
84
+ n_ini_radio=10,
85
+ n_extra_radio=0,
86
+ dim=128,
87
+ dark_n=1,
88
+ flat_n=1,
89
+ )
90
+ self.widget = EDF2NXOW()
91
+ self._process_manager = ProcessManager()
92
+
93
+ def tearDown(self):
94
+ self.widget.setAttribute(qt.Qt.WA_DeleteOnClose)
95
+ self.widget.close()
96
+ self.widget = None
97
+ shutil.rmtree(self.tempdir)
98
+ gc.collect()
99
+
100
+ def test(self):
101
+ self.widget.add(self._edf_folder_1)
102
+ self.widget.add(self._edf_folder_2)
103
+ self.widget._sendAll()
104
+ self.qapp.processEvents()
105
+ timeout = 10
106
+ processing_queue = self.widget.task_executor_queue
107
+ while not processing_queue.is_available and not processing_queue.empty():
108
+ self.qapp.processEvents()
109
+ time.sleep(0.1)
110
+ timeout -= 0.1
111
+ if timeout <= 0:
112
+ raise TimeoutError
113
+ # need to call one more time the processEvents tpo call callbacks and status notification
114
+ for i in range(3):
115
+ self.qapp.processEvents()
116
+ time.sleep(0.1)
117
+
118
+ # check the two output files exists and status of the processing is done...
119
+ for folder in (self._edf_folder_1, self._edf_folder_2):
120
+ scan = NXtomoScan(scan=folder + ".nx", entry="entry")
121
+ self.assertTrue(os.path.exists(scan.master_file))
122
+
123
+ self.assertEqual(
124
+ self._process_manager.get_dataset_state(
125
+ dataset_id=scan.get_identifier(),
126
+ process=self.widget,
127
+ ),
128
+ DatasetState.SUCCEED,
129
+ )
130
+
131
+ def test_literal_dumps(self):
132
+ self.widget._saveNXTomoCfgFile(cfg_file="")
133
+ literal_dumps(self.widget._ewoks_default_inputs)
@@ -0,0 +1,40 @@
1
+ import gc
2
+ import pickle
3
+ import numpy
4
+
5
+ from silx.gui import qt
6
+ from silx.gui.utils.testutils import TestCaseQt
7
+
8
+ from orangecontrib.tomwer.widgets.control.ReduceDarkFlatSelectorOW import (
9
+ ReduceDarkFlatSelectorOW,
10
+ )
11
+ from orangecanvas.scheme.readwrite import literal_dumps
12
+
13
+
14
+ class TestEmailOW(TestCaseQt):
15
+ def setUp(self):
16
+ super().setUp()
17
+ self.widget = ReduceDarkFlatSelectorOW()
18
+ self.widget._dialog.addReduceFrames(
19
+ {
20
+ "reduce_frames_name": "new dict",
21
+ -1: numpy.random.random(100 * 100).reshape(100, 100),
22
+ 2: numpy.random.random(100 * 100).reshape(100, 100),
23
+ },
24
+ selected=(-1, 2),
25
+ )
26
+
27
+ def tearDown(self):
28
+ self.widget.setAttribute(qt.Qt.WA_DeleteOnClose)
29
+ self.widget.close()
30
+ self.widget = None
31
+ gc.collect()
32
+
33
+ def test(self):
34
+ self.widget.show()
35
+
36
+ def test_serializing(self):
37
+ pickle.dumps(self.widget.getConfiguration())
38
+
39
+ def test_literal_dumps(self):
40
+ literal_dumps(self.widget.getConfiguration())
@@ -0,0 +1,40 @@
1
+ import gc
2
+ import os
3
+ import pickle
4
+ import shutil
5
+ import tempfile
6
+
7
+ import numpy
8
+ from orangecanvas.scheme.readwrite import literal_dumps
9
+ from silx.gui import qt
10
+ from silx.gui.utils.testutils import TestCaseQt
11
+
12
+ from orangecontrib.tomwer.widgets.control.SingleTomoObjOW import SingleTomoObjOW
13
+ from tomwer.core.volume.hdf5volume import HDF5Volume
14
+
15
+
16
+ class TestSingleTomoObjOW(TestCaseQt):
17
+ def setUp(self):
18
+ super().setUp()
19
+ self.window = SingleTomoObjOW()
20
+ self.folder = tempfile.mkdtemp()
21
+ self.volume_1 = HDF5Volume(
22
+ file_path=os.path.join(self.folder, "vol_file.hdf5"),
23
+ data_path="entry0000",
24
+ data=numpy.linspace(0, 10, 100 * 100 * 3).reshape(3, 100, 100),
25
+ )
26
+ self.volume_1.save()
27
+
28
+ def tearDown(self):
29
+ self.window.setAttribute(qt.Qt.WA_DeleteOnClose)
30
+ self.window.close()
31
+ self.window = None
32
+ shutil.rmtree(self.folder)
33
+ gc.collect()
34
+
35
+ def test(self):
36
+ self.window.show()
37
+ self.window.widget.setTomoObject(self.volume_1)
38
+ # test serialization
39
+ pickle.dumps(self.window._tomo_obj_setting)
40
+ literal_dumps(self.window._tomo_obj_setting)
@@ -0,0 +1,25 @@
1
+ # coding: utf-8
2
+ from __future__ import annotations
3
+
4
+
5
+ import gc
6
+
7
+ from silx.gui import qt
8
+ from silx.gui.utils.testutils import TestCaseQt
9
+
10
+ from orangecontrib.tomwer.widgets.control.TimerOW import TimerOW
11
+
12
+
13
+ class TestTimerOW(TestCaseQt):
14
+ def setUp(self):
15
+ super().setUp()
16
+ self.widget = TimerOW()
17
+
18
+ def tearDown(self):
19
+ self.widget.setAttribute(qt.Qt.WA_DeleteOnClose)
20
+ self.widget.close()
21
+ self.widget = None
22
+ gc.collect()
23
+
24
+ def test(self):
25
+ self.widget.show()
@@ -0,0 +1,96 @@
1
+ import gc
2
+ import os
3
+ import shutil
4
+ import tempfile
5
+
6
+ import numpy
7
+ from silx.gui import qt
8
+ from silx.gui.utils.testutils import SignalListener, TestCaseQt
9
+
10
+ from orangecontrib.tomwer.widgets.control.TomoObjSeriesOW import TomoObjSeriesOW
11
+ from tomwer.core.utils.scanutils import HDF5MockContext
12
+ from tomwer.core.volume.hdf5volume import HDF5Volume
13
+
14
+
15
+ class TestTomoObjSeriesOW(TestCaseQt):
16
+ """
17
+ Test the TomoObjSeriesOW orange widget
18
+ """
19
+
20
+ def setUp(self):
21
+ super().setUp()
22
+ self.window = TomoObjSeriesOW()
23
+ self.folder = tempfile.mkdtemp()
24
+
25
+ # connect to the series created signal
26
+ self._listener = SignalListener()
27
+ self.window._widget.sigSeriesSelected.connect(self._listener)
28
+
29
+ def tearDown(self):
30
+ self.window.setAttribute(qt.Qt.WA_DeleteOnClose)
31
+ self.window.close()
32
+ self.window = None
33
+ self._listener = None
34
+ shutil.rmtree(self.folder)
35
+ gc.collect()
36
+
37
+ def test_with_volumes(self):
38
+ """test the TomoObjSeriesOW with volumes"""
39
+ volume_1 = HDF5Volume(
40
+ file_path=os.path.join(self.folder, "vol_file.hdf5"),
41
+ data_path="entry0000",
42
+ data=numpy.linspace(0, 10, 100 * 100 * 3).reshape(3, 100, 100),
43
+ )
44
+ volume_1.save()
45
+ volume_2 = HDF5Volume(
46
+ file_path=os.path.join(self.folder, "vol_file2.hdf5"),
47
+ data_path="entry0001",
48
+ data=numpy.linspace(60, 120, 100 * 100 * 5).reshape(5, 100, 100),
49
+ )
50
+ volume_2.save()
51
+
52
+ assert self._listener.callCount() == 0
53
+ assert len(self.window._widget._widget.getSelectedSeries()) == 0
54
+ # add the volume to the possible objects to be added
55
+ self.window.addTomoObj(volume_1)
56
+ self.window.addTomoObj(volume_2)
57
+ assert len(self.window._widget._widget.getSelectedSeries()) == 0
58
+
59
+ # add volume to the series defined
60
+ newSerieWidget = (
61
+ self.window._widget._widget._seriesDefinitionWidget._manualDefWidget._newSeriesWidget
62
+ )
63
+ newSerieWidget.addTomoObjToCurrentSeries(volume_1)
64
+ assert len(self.window._widget._widget.getSelectedSeries()) == 1
65
+ newSerieWidget.addTomoObjToCurrentSeries(
66
+ volume_1
67
+ ) # try adding twice the same object
68
+ assert len(self.window._widget._widget.getSelectedSeries()) == 1
69
+ newSerieWidget.addTomoObjToCurrentSeries(volume_2)
70
+ assert len(self.window._widget._widget.getSelectedSeries()) == 2
71
+ assert self._listener.callCount() == 0
72
+ self.window._widget._selectButton.released.emit()
73
+ self.qapp.processEvents()
74
+ assert self._listener.callCount() == 1
75
+
76
+ def test_with_scans(self):
77
+ """test the TomoObjSeriesOW with scans"""
78
+ with HDF5MockContext(
79
+ scan_path=os.path.join(self.folder, "test", "scan"), n_proj=100
80
+ ) as scan:
81
+ assert self._listener.callCount() == 0
82
+
83
+ # add the scan to possible objects to be added
84
+ self.window.addTomoObj(scan)
85
+ assert len(self.window._widget._widget.getSelectedSeries()) == 0
86
+
87
+ # add scan to the series defined
88
+ newSerieWidget = (
89
+ self.window._widget._widget._seriesDefinitionWidget._manualDefWidget._newSeriesWidget
90
+ )
91
+ newSerieWidget.addTomoObjToCurrentSeries(scan)
92
+
93
+ assert len(self.window._widget._widget.getSelectedSeries()) == 1
94
+ self.window._widget._selectButton.released.emit()
95
+ self.qapp.processEvents()
96
+ assert self._listener.callCount() == 1
@@ -0,0 +1,69 @@
1
+ import gc
2
+ import os
3
+ import pickle
4
+ import shutil
5
+ import tempfile
6
+
7
+ import numpy
8
+ from orangecanvas.scheme.readwrite import literal_dumps
9
+ from silx.gui import qt
10
+ from silx.gui.utils.testutils import TestCaseQt
11
+
12
+ from orangecontrib.tomwer.widgets.control.VolumeSelector import VolumeSelectorOW
13
+ from tomwer.core.volume.hdf5volume import HDF5Volume
14
+
15
+
16
+ class TestVolumeSelectorOW(TestCaseQt):
17
+ def setUp(self):
18
+ super().setUp()
19
+ self.window = VolumeSelectorOW()
20
+ self.folder = tempfile.mkdtemp()
21
+ self.volume_1 = HDF5Volume(
22
+ file_path=os.path.join(self.folder, "vol_file.hdf5"),
23
+ data_path="entry0000",
24
+ data=numpy.linspace(0, 10, 100 * 100 * 3).reshape(3, 100, 100),
25
+ )
26
+ self.volume_1.save()
27
+ self.volume_2 = HDF5Volume(
28
+ file_path=os.path.join(self.folder, "vol_file2.hdf5"),
29
+ data_path="entry0001",
30
+ data=numpy.linspace(60, 120, 100 * 100 * 5).reshape(5, 100, 100),
31
+ )
32
+ self.volume_2.save()
33
+
34
+ def tearDown(self):
35
+ self.window.setAttribute(qt.Qt.WA_DeleteOnClose)
36
+ self.window.close()
37
+ self.window = None
38
+ shutil.rmtree(self.folder)
39
+ gc.collect()
40
+
41
+ def test(self):
42
+ self.window.show()
43
+ # check adding one volume
44
+ self.window.addVolume(self.volume_1)
45
+ assert self.window.widget.dataList.n_data() == 1
46
+ # check behavior adding the same volume
47
+ self.window.addVolume(self.volume_1)
48
+ assert self.window.widget.dataList.n_data() == 1
49
+ # check adding another volume
50
+ self.window.addVolume(self.volume_2)
51
+ assert self.window.widget.dataList.n_data() == 2
52
+ # check removing volume(s)
53
+ self.window.removeVolume(self.volume_1)
54
+ assert self.window.widget.dataList.n_data() == 1
55
+ self.window.removeVolume(self.volume_1)
56
+ assert self.window.widget.dataList.n_data() == 1
57
+ self.window.removeVolume(self.volume_2)
58
+ assert self.window.widget.dataList.n_data() == 0
59
+
60
+ # and adding them back
61
+ self.window.addVolume(self.volume_1)
62
+ self.window.addVolume(self.volume_2)
63
+ assert self.window.widget.dataList.n_data() == 2
64
+
65
+ # test serialization
66
+ self.window._updateSettings()
67
+ assert len(self.window._scanIDs) == 2
68
+ pickle.dumps(self.window._scanIDs)
69
+ literal_dumps(self.window._scanIDs)
@@ -1,7 +1,7 @@
1
1
  # coding: utf-8
2
2
  # /*##########################################################################
3
3
  #
4
- # Copyright (c) 2017-2019 European Synchrotron Radiation Facility
4
+ # Copyright (c) 2017-2021 European Synchrotron Radiation Facility
5
5
  #
6
6
  # Permission is hereby granted, free of charge, to any person obtaining a copy
7
7
  # of this software and associated documentation files (the "Software"), to deal
@@ -22,35 +22,36 @@
22
22
  # THE SOFTWARE.
23
23
  #
24
24
  # ###########################################################################*/
25
+
25
26
  __authors__ = ["H. Payno"]
26
27
  __license__ = "MIT"
27
- __date__ = "10/12/2021"
28
+ __date__ = "21/06/2021"
28
29
 
29
30
 
30
31
  import gc
32
+ import shutil
33
+ import tempfile
31
34
 
32
- import pytest
33
35
  from silx.gui import qt
34
36
  from silx.gui.utils.testutils import TestCaseQt
35
37
 
36
- from orangecontrib.tomwer.widgets.edit.ImageKeyEditorOW import ImageKeyEditorOW
37
- from tomwer.tests.utils import skip_gui_test
38
-
38
+ from orangecontrib.tomwer.widgets.debugtools.DatasetGeneratorOW import (
39
+ DatasetGeneratorOW,
40
+ )
39
41
 
40
- @pytest.mark.skipif(skip_gui_test(), reason="skip gui test")
41
- class TestImageKeyEditor(TestCaseQt):
42
- """Test that the ImageKeyEditorOW widget work correctly (at least launched)"""
43
42
 
43
+ class TestDatasetGeneratorOW(TestCaseQt):
44
44
  def setUp(self):
45
- super().setUp()
46
- self._window = ImageKeyEditorOW()
45
+ self.tmp_dir = tempfile.mkdtemp()
46
+ self.widget = DatasetGeneratorOW()
47
+ self.widget.generatorGUI.mainWidget.setRootDir(self.tmp_dir)
47
48
 
48
49
  def tearDown(self):
49
- self._window.setAttribute(qt.Qt.WA_DeleteOnClose)
50
- self._window.close()
51
- self._window = None
50
+ shutil.rmtree(self.tmp_dir)
51
+ self.widget.setAttribute(qt.Qt.WA_DeleteOnClose)
52
+ self.widget.close()
53
+ self.widget = None
52
54
  gc.collect()
53
55
 
54
56
  def test(self):
55
- self._window.show()
56
- self.qWaitForWindowExposed(self._window)
57
+ self.widget._generate().join()
@@ -0,0 +1,36 @@
1
+ # coding: utf-8
2
+ from __future__ import annotations
3
+
4
+
5
+ import gc
6
+ import os
7
+ import shutil
8
+ import tempfile
9
+
10
+ from silx.gui import qt
11
+ from silx.gui.utils.testutils import TestCaseQt
12
+
13
+ from orangecontrib.tomwer.widgets.debugtools.ObjectInspectorOW import ObjectInspectorOW
14
+ from tomwer.core.utils.scanutils import MockNXtomo
15
+
16
+
17
+ class TestObjectInspectorOW(TestCaseQt):
18
+ def setUp(self):
19
+ super().setUp()
20
+ self.tmp_dir = tempfile.mkdtemp()
21
+ self.scan = MockNXtomo(
22
+ scan_path=os.path.join(self.tmp_dir, "myscan"),
23
+ n_proj=20,
24
+ n_ini_proj=20,
25
+ dim=10,
26
+ ).scan
27
+
28
+ def tearDown(self):
29
+ shutil.rmtree(self.tmp_dir)
30
+ gc.collect()
31
+
32
+ def test(self):
33
+ widget = ObjectInspectorOW()
34
+ widget.setObject(self.scan)
35
+ widget.setAttribute(qt.Qt.WA_DeleteOnClose)
36
+ widget.close()
@@ -1,31 +1,5 @@
1
1
  # coding: utf-8
2
- # /*##########################################################################
3
- #
4
- # Copyright (c) 2017-2019 European Synchrotron Radiation Facility
5
- #
6
- # Permission is hereby granted, free of charge, to any person obtaining a copy
7
- # of this software and associated documentation files (the "Software"), to deal
8
- # in the Software without restriction, including without limitation the rights
9
- # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10
- # copies of the Software, and to permit persons to whom the Software is
11
- # furnished to do so, subject to the following conditions:
12
- #
13
- # The above copyright notice and this permission notice shall be included in
14
- # all copies or substantial portions of the Software.
15
- #
16
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17
- # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18
- # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19
- # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20
- # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21
- # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22
- # THE SOFTWARE.
23
- #
24
- # ###########################################################################*/
25
- __authors__ = ["H. Payno"]
26
- __license__ = "MIT"
27
- __date__ = "10/12/2021"
28
-
2
+ from __future__ import annotations
29
3
 
30
4
  import gc
31
5
  import os
@@ -0,0 +1,30 @@
1
+ # coding: utf-8
2
+ from __future__ import annotations
3
+
4
+ import gc
5
+
6
+ import pytest
7
+ from silx.gui import qt
8
+ from silx.gui.utils.testutils import TestCaseQt
9
+
10
+ from orangecontrib.tomwer.widgets.edit.ImageKeyEditorOW import ImageKeyEditorOW
11
+ from tomwer.tests.utils import skip_gui_test
12
+
13
+
14
+ @pytest.mark.skipif(skip_gui_test(), reason="skip gui test")
15
+ class TestImageKeyEditor(TestCaseQt):
16
+ """Test that the ImageKeyEditorOW widget work correctly (at least launched)"""
17
+
18
+ def setUp(self):
19
+ super().setUp()
20
+ self._window = ImageKeyEditorOW()
21
+
22
+ def tearDown(self):
23
+ self._window.setAttribute(qt.Qt.WA_DeleteOnClose)
24
+ self._window.close()
25
+ self._window = None
26
+ gc.collect()
27
+
28
+ def test(self):
29
+ self._window.show()
30
+ self.qWaitForWindowExposed(self._window)