dcscope 2.27.0__tar.gz → 2.28.1__tar.gz

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 (655) hide show
  1. {dcscope-2.27.0 → dcscope-2.28.1}/.github/workflows/deploy_github.yml +3 -0
  2. {dcscope-2.27.0 → dcscope-2.28.1}/CHANGELOG +35 -0
  3. {dcscope-2.27.0/dcscope.egg-info → dcscope-2.28.1}/PKG-INFO +2 -2
  4. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/__main__.py +20 -1
  5. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/_version.py +3 -3
  6. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/analysis/ana_filter.py +18 -3
  7. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/analysis/ana_filter_ui.py +1 -1
  8. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/analysis/ana_plot.py +7 -1
  9. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/export/e2data.py +103 -79
  10. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/export/e2plot.py +1 -1
  11. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/main.py +211 -111
  12. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/matrix/dm_dataset.py +8 -0
  13. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/matrix/dm_dataset_ui.py +0 -1
  14. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/matrix/dm_element.py +32 -7
  15. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/matrix/dm_element_ui.py +0 -1
  16. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/matrix/dm_filter.py +8 -0
  17. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/matrix/dm_filter_ui.py +0 -1
  18. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/matrix/pm_element.py +30 -6
  19. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/matrix/pm_plot.py +9 -0
  20. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/matrix/pm_plot_ui.py +0 -1
  21. dcscope-2.28.1/dcscope/gui/pipeline_plot.py +366 -0
  22. dcscope-2.28.1/dcscope/gui/pipeline_plot_compute.py +177 -0
  23. dcscope-2.28.1/dcscope/gui/pipeline_plot_item.py +525 -0
  24. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/quick_view/qv_main.py +127 -44
  25. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/quick_view/qv_scatter.py +43 -95
  26. dcscope-2.28.1/dcscope/gui/tasks/__init__.py +7 -0
  27. dcscope-2.28.1/dcscope/gui/tasks/manager.py +231 -0
  28. dcscope-2.28.1/dcscope/gui/tasks/worker.py +148 -0
  29. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/widgets/__init__.py +2 -2
  30. dcscope-2.28.1/dcscope/gui/widgets/colorbaritem.py +66 -0
  31. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/widgets/mdi_subwindow_wo_close.py +5 -2
  32. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/widgets/simple_plot_widget.py +1 -1
  33. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/img/icon-theme/collect_icons.py +10 -5
  34. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/16/application-exit.svg +7 -0
  35. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/16/code-context.svg +7 -0
  36. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/16/dialog-cancel.svg +7 -0
  37. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/16/dialog-close.svg +10 -0
  38. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/16/dialog-messages.svg +7 -0
  39. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/16/dialog-ok-apply.svg +7 -0
  40. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/16/dialog-ok.svg +7 -0
  41. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/16/document-open-folder.svg +7 -0
  42. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/16/document-open.svg +7 -0
  43. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/16/document-save.svg +7 -0
  44. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/16/documentinfo.svg +9 -0
  45. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/16/draw-watercolor.svg +7 -0
  46. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/16/edit-clear-all.svg +7 -0
  47. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/16/edit-clear.svg +7 -0
  48. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/16/edit-paste.svg +7 -0
  49. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/16/globe.svg +9 -0
  50. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/16/gtk-preferences.svg +7 -0
  51. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/16/list-add.svg +7 -0
  52. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/16/messagebox_warning.svg +8 -0
  53. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/16/object-columns.svg +7 -0
  54. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/16/object-order-lower.svg +7 -0
  55. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/16/object-rows.svg +7 -0
  56. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/16/office-chart-line-stacked.svg +7 -0
  57. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/16/office-chart-ring.svg +7 -0
  58. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/16/office-chart-scatter.svg +7 -0
  59. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/16/path-mode-polyline.svg +7 -0
  60. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/16/preferences-activities.svg +45 -0
  61. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/16/remove.svg +5 -0
  62. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/16/search.svg +7 -0
  63. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/16/show-grid.svg +7 -0
  64. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/16/special_paste.svg +7 -0
  65. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/16/tools-wizard.svg +7 -0
  66. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/16/view-calendar-list.svg +7 -0
  67. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/16/view-filter.svg +7 -0
  68. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/16/view-list-tree.svg +7 -0
  69. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/16/view-statistics.svg +7 -0
  70. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/16/visibility.svg +11 -0
  71. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/22/application-exit.svg +7 -0
  72. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/22/code-context.svg +7 -0
  73. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/22/dialog-cancel.svg +7 -0
  74. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/22/dialog-close.svg +10 -0
  75. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/22/dialog-messages.svg +7 -0
  76. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/22/dialog-ok-apply.svg +7 -0
  77. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/22/dialog-ok.svg +7 -0
  78. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/22/document-open-folder.svg +7 -0
  79. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/22/document-open.svg +7 -0
  80. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/22/document-save.svg +7 -0
  81. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/22/documentinfo.svg +7 -0
  82. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/22/draw-watercolor.svg +7 -0
  83. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/22/edit-clear-all.svg +7 -0
  84. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/22/edit-clear.svg +7 -0
  85. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/22/edit-paste.svg +7 -0
  86. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/22/globe.svg +9 -0
  87. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/22/gtk-preferences.svg +7 -0
  88. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/22/list-add.svg +7 -0
  89. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/22/messagebox_warning.svg +8 -0
  90. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/22/object-columns.svg +7 -0
  91. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/22/object-order-lower.svg +7 -0
  92. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/22/object-rows.svg +7 -0
  93. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/22/office-chart-line-stacked.svg +7 -0
  94. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/22/office-chart-ring.svg +7 -0
  95. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/22/office-chart-scatter.svg +7 -0
  96. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/22/path-mode-polyline.svg +7 -0
  97. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/22/remove.svg +5 -0
  98. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/22/special_paste.svg +7 -0
  99. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/22/tools-wizard.svg +7 -0
  100. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/22/view-calendar-list.svg +7 -0
  101. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/22/view-filter.svg +7 -0
  102. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/22/view-list-tree.svg +7 -0
  103. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/22/view-statistics.svg +7 -0
  104. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/22/visibility.svg +7 -0
  105. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/24/application-exit.svg +9 -0
  106. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/24/code-context.svg +9 -0
  107. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/24/dialog-cancel.svg +9 -0
  108. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/24/dialog-close.svg +12 -0
  109. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/24/dialog-messages.svg +9 -0
  110. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/24/dialog-ok-apply.svg +9 -0
  111. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/24/dialog-ok.svg +9 -0
  112. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/24/document-open-folder.svg +9 -0
  113. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/24/document-open.svg +9 -0
  114. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/24/document-save.svg +9 -0
  115. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/24/documentinfo.svg +9 -0
  116. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/24/draw-watercolor.svg +9 -0
  117. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/24/edit-clear-all.svg +9 -0
  118. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/24/edit-clear.svg +9 -0
  119. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/24/edit-paste.svg +9 -0
  120. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/24/globe.svg +11 -0
  121. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/24/gtk-preferences.svg +9 -0
  122. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/24/list-add.svg +9 -0
  123. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/24/messagebox_warning.svg +10 -0
  124. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/24/object-columns.svg +9 -0
  125. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/24/object-order-lower.svg +9 -0
  126. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/24/object-rows.svg +9 -0
  127. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/24/office-chart-line-stacked.svg +9 -0
  128. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/24/office-chart-ring.svg +9 -0
  129. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/24/office-chart-scatter.svg +9 -0
  130. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/24/path-mode-polyline.svg +9 -0
  131. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/24/preferences-activities.svg +45 -0
  132. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/24/remove.svg +7 -0
  133. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/24/special_paste.svg +9 -0
  134. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/24/tools-wizard.svg +9 -0
  135. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/24/view-calendar-list.svg +9 -0
  136. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/24/view-filter.svg +9 -0
  137. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/24/view-list-tree.svg +9 -0
  138. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/24/view-statistics.svg +9 -0
  139. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/24/visibility.svg +9 -0
  140. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/32/application-exit.svg +10 -0
  141. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/32/dialog-cancel.svg +7 -0
  142. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/32/dialog-messages.svg +7 -0
  143. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/32/dialog-ok-apply.svg +5 -0
  144. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/32/dialog-ok.svg +5 -0
  145. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/32/document-open-folder.svg +7 -0
  146. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/32/document-open.svg +7 -0
  147. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/32/document-save.svg +7 -0
  148. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/32/globe.svg +1 -0
  149. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/32/gtk-preferences.svg +7 -0
  150. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/32/object-order-lower.svg +7 -0
  151. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/32/view-filter.svg +7 -0
  152. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/actions/32/view-list-tree.svg +7 -0
  153. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/places/16/folder-cloud.svg +7 -0
  154. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/places/16/folder.svg +7 -0
  155. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/places/22/folder-cloud.svg +7 -0
  156. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/places/22/folder.svg +7 -0
  157. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/places/24/folder-cloud.svg +9 -0
  158. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/places/24/folder.svg +9 -0
  159. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/places/32/folder-cloud.svg +11 -0
  160. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/places/32/folder.svg +10 -0
  161. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/places/64/folder-cloud.svg +11 -0
  162. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/places/64/folder.svg +10 -0
  163. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/status/16/dialog-error.svg +6 -0
  164. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/status/16/dialog-information.svg +6 -0
  165. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/status/16/dialog-warning.svg +6 -0
  166. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/status/22/dialog-error.svg +6 -0
  167. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/status/22/dialog-information.svg +6 -0
  168. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/status/22/dialog-warning.svg +6 -0
  169. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/status/24/dialog-error.svg +8 -0
  170. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/status/24/dialog-information.svg +8 -0
  171. dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark/status/24/dialog-warning.svg +8 -0
  172. dcscope-2.28.1/dcscope/img/icon-theme/dark/dcscope/dcor.png +0 -0
  173. dcscope-2.28.1/dcscope/img/icon-theme/dark/dcscope/edit-copy-anew.svg +45 -0
  174. dcscope-2.28.1/dcscope/img/icon-theme/dark/dcscope/emodulus.svg +77 -0
  175. dcscope-2.28.1/dcscope/img/icon-theme/dark/dcscope/filter_ray.svg +61 -0
  176. dcscope-2.28.1/dcscope/img/icon-theme/dark/dcscope/region_channel.svg +94 -0
  177. dcscope-2.28.1/dcscope/img/icon-theme/dark/dcscope/region_reservoir.svg +97 -0
  178. dcscope-2.28.1/dcscope/img/icon-theme/dark/dcscope/rlang.svg +116 -0
  179. dcscope-2.28.1/dcscope/img/icon-theme/dark/dcscope/statistical_significance.svg +115 -0
  180. dcscope-2.28.1/dcscope/img/icon-theme/dark/index.theme +81 -0
  181. dcscope-2.28.1/dcscope/img/icon-theme/light/breeze/actions/16/dialog-close.svg +17 -0
  182. dcscope-2.28.1/dcscope/img/icon-theme/light/breeze/actions/22/dialog-close.svg +17 -0
  183. dcscope-2.28.1/dcscope/img/icon-theme/light/breeze/actions/24/dialog-close.svg +15 -0
  184. dcscope-2.28.1/dcscope/img/icon-theme/light/breeze/actions/24/dialog-ok.svg +12 -0
  185. dcscope-2.28.1/dcscope/img/icon-theme/light/breeze/actions/24/documentinfo.svg +12 -0
  186. dcscope-2.28.1/dcscope/img/icon-theme/light/breeze/actions/24/edit-clear-all.svg +12 -0
  187. dcscope-2.28.1/dcscope/img/icon-theme/light/breeze/actions/24/gtk-preferences.svg +12 -0
  188. dcscope-2.28.1/dcscope/img/icon-theme/light/breeze/actions/24/remove.svg +10 -0
  189. dcscope-2.28.1/dcscope/img/icon-theme/light/breeze/actions/24/visibility.svg +12 -0
  190. dcscope-2.28.1/dcscope/img/icon-theme/light/breeze/actions/32/globe.svg +1 -0
  191. dcscope-2.28.1/dcscope/img/icon-theme/light/breeze/status/16/dialog-question.svg +7 -0
  192. dcscope-2.28.1/dcscope/img/icon-theme/light/breeze/status/22/dialog-question.svg +7 -0
  193. dcscope-2.28.1/dcscope/img/icon-theme/light/breeze/status/24/dialog-error.svg +11 -0
  194. dcscope-2.28.1/dcscope/img/icon-theme/light/breeze/status/24/dialog-information.svg +11 -0
  195. dcscope-2.28.1/dcscope/img/icon-theme/light/breeze/status/24/dialog-question.svg +9 -0
  196. dcscope-2.28.1/dcscope/img/icon-theme/light/breeze/status/24/dialog-warning.svg +11 -0
  197. dcscope-2.28.1/dcscope/img/icon-theme/light/breeze/status/64/dialog-error.svg +25 -0
  198. dcscope-2.28.1/dcscope/img/icon-theme/light/breeze/status/64/dialog-information.svg +25 -0
  199. dcscope-2.28.1/dcscope/img/icon-theme/light/breeze/status/64/dialog-question.svg +25 -0
  200. dcscope-2.28.1/dcscope/img/icon-theme/light/breeze/status/64/dialog-warning.svg +25 -0
  201. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/pipeline/core.py +48 -31
  202. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/session.py +59 -8
  203. {dcscope-2.27.0 → dcscope-2.28.1/dcscope.egg-info}/PKG-INFO +2 -2
  204. dcscope-2.28.1/dcscope.egg-info/SOURCES.txt +636 -0
  205. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope.egg-info/requires.txt +1 -1
  206. dcscope-2.28.1/dcscope.egg-info/scm_file_list.json +631 -0
  207. dcscope-2.28.1/dcscope.egg-info/scm_version.json +8 -0
  208. {dcscope-2.27.0 → dcscope-2.28.1}/docs/scrots/make_scrots_ui.py +11 -2
  209. dcscope-2.28.1/docs/scrots/ui_ana_plot.png +0 -0
  210. {dcscope-2.27.0 → dcscope-2.28.1}/pyproject.toml +1 -1
  211. {dcscope-2.27.0 → dcscope-2.28.1}/tests/conftest.py +3 -1
  212. {dcscope-2.27.0 → dcscope-2.28.1}/tests/test_gui_export_plot.py +18 -3
  213. {dcscope-2.27.0 → dcscope-2.28.1}/tests/test_gui_filter.py +111 -0
  214. {dcscope-2.27.0 → dcscope-2.28.1}/tests/test_gui_plotting.py +126 -9
  215. {dcscope-2.27.0 → dcscope-2.28.1}/tests/test_gui_quickview.py +44 -1
  216. dcscope-2.28.1/tests/test_gui_tasks.py +284 -0
  217. {dcscope-2.27.0 → dcscope-2.28.1}/tests-manual/plot-export.py +4 -0
  218. dcscope-2.28.1/tests-manual/plot-export.so2 +0 -0
  219. {dcscope-2.27.0 → dcscope-2.28.1}/ui/analysis/ana_filter.ui +1 -1
  220. {dcscope-2.27.0 → dcscope-2.28.1}/ui/matrix/dm_dataset.ui +0 -3
  221. {dcscope-2.27.0 → dcscope-2.28.1}/ui/matrix/dm_element.ui +7 -10
  222. {dcscope-2.27.0 → dcscope-2.28.1}/ui/matrix/dm_filter.ui +0 -3
  223. {dcscope-2.27.0 → dcscope-2.28.1}/ui/matrix/pm_plot.ui +0 -3
  224. dcscope-2.27.0/dcscope/gui/pipeline_plot.py +0 -892
  225. dcscope-2.27.0/dcscope/gui/widgets/so_colorbaritem.py +0 -29
  226. dcscope-2.27.0/dcscope/img/icon-theme/breeze/actions/16/dialog-close.svg +0 -17
  227. dcscope-2.27.0/dcscope/img/icon-theme/breeze/actions/22/dialog-close.svg +0 -10
  228. dcscope-2.27.0/dcscope/img/icon-theme/breeze/actions/24/dialog-close.svg +0 -10
  229. dcscope-2.27.0/dcscope/img/icon-theme/breeze/actions/24/dialog-ok.svg +0 -14
  230. dcscope-2.27.0/dcscope/img/icon-theme/breeze/actions/24/documentinfo.svg +0 -14
  231. dcscope-2.27.0/dcscope/img/icon-theme/breeze/actions/24/edit-clear-all.svg +0 -14
  232. dcscope-2.27.0/dcscope/img/icon-theme/breeze/actions/24/gtk-preferences.svg +0 -13
  233. dcscope-2.27.0/dcscope/img/icon-theme/breeze/actions/24/remove.svg +0 -10
  234. dcscope-2.27.0/dcscope/img/icon-theme/breeze/actions/24/visibility.svg +0 -14
  235. dcscope-2.27.0/dcscope/img/icon-theme/breeze/status/24/dialog-error.svg +0 -13
  236. dcscope-2.27.0/dcscope/img/icon-theme/breeze/status/24/dialog-information.svg +0 -13
  237. dcscope-2.27.0/dcscope/img/icon-theme/breeze/status/24/dialog-warning.svg +0 -1
  238. dcscope-2.27.0/dcscope.egg-info/SOURCES.txt +0 -473
  239. dcscope-2.27.0/docs/scrots/ui_ana_plot.png +0 -0
  240. dcscope-2.27.0/tests-manual/plot-export.so2 +0 -0
  241. {dcscope-2.27.0 → dcscope-2.28.1}/.github/workflows/check.yml +0 -0
  242. {dcscope-2.27.0 → dcscope-2.28.1}/.github/workflows/deploy_pypi.yml +0 -0
  243. {dcscope-2.27.0 → dcscope-2.28.1}/.gitignore +0 -0
  244. {dcscope-2.27.0 → dcscope-2.28.1}/.readthedocs.yml +0 -0
  245. {dcscope-2.27.0 → dcscope-2.28.1}/LICENSE +0 -0
  246. {dcscope-2.27.0 → dcscope-2.28.1}/MANIFEST.in +0 -0
  247. {dcscope-2.27.0 → dcscope-2.28.1}/README.rst +0 -0
  248. {dcscope-2.27.0 → dcscope-2.28.1}/build-recipes/DCscope.icns +0 -0
  249. {dcscope-2.27.0 → dcscope-2.28.1}/build-recipes/DCscope.ico +0 -0
  250. {dcscope-2.27.0 → dcscope-2.28.1}/build-recipes/DCscopeLauncher.py +0 -0
  251. {dcscope-2.27.0 → dcscope-2.28.1}/build-recipes/Readme.md +0 -0
  252. {dcscope-2.27.0 → dcscope-2.28.1}/build-recipes/hook-dcscope.py +0 -0
  253. {dcscope-2.27.0 → dcscope-2.28.1}/build-recipes/macos_DCscope.spec +0 -0
  254. {dcscope-2.27.0 → dcscope-2.28.1}/build-recipes/macos_build_app.sh +0 -0
  255. {dcscope-2.27.0 → dcscope-2.28.1}/build-recipes/macos_build_requirements.txt +0 -0
  256. {dcscope-2.27.0 → dcscope-2.28.1}/build-recipes/win_DCscope.spec +0 -0
  257. {dcscope-2.27.0 → dcscope-2.28.1}/build-recipes/win_build_requirements.txt +0 -0
  258. {dcscope-2.27.0 → dcscope-2.28.1}/build-recipes/win_dcscope.iss_dummy +0 -0
  259. {dcscope-2.27.0 → dcscope-2.28.1}/build-recipes/win_make_iss.py +0 -0
  260. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/__init__.py +0 -0
  261. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/extensions.py +0 -0
  262. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/__init__.py +0 -0
  263. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/analysis/__init__.py +0 -0
  264. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/analysis/ana_basins.py +0 -0
  265. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/analysis/ana_basins_ui.py +0 -0
  266. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/analysis/ana_log.py +0 -0
  267. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/analysis/ana_log_ui.py +0 -0
  268. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/analysis/ana_meta.py +0 -0
  269. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/analysis/ana_meta_ui.py +0 -0
  270. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/analysis/ana_plot_ui.py +0 -0
  271. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/analysis/ana_slot.py +0 -0
  272. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/analysis/ana_slot_ui.py +0 -0
  273. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/analysis/ana_tables.py +0 -0
  274. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/analysis/ana_tables_ui.py +0 -0
  275. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/analysis/ana_view.py +0 -0
  276. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/analysis/ana_view_ui.py +0 -0
  277. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/analysis/dlg_slot_reorder.py +0 -0
  278. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/analysis/dlg_slot_reorder_ui.py +0 -0
  279. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/bulk/__init__.py +0 -0
  280. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/bulk/bulk_emodulus.py +0 -0
  281. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/bulk/bulk_emodulus_ui.py +0 -0
  282. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/compute/__init__.py +0 -0
  283. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/compute/comp_lme4.py +0 -0
  284. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/compute/comp_lme4_dataset.py +0 -0
  285. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/compute/comp_lme4_dataset_ui.py +0 -0
  286. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/compute/comp_lme4_results.py +0 -0
  287. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/compute/comp_lme4_results_ui.py +0 -0
  288. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/compute/comp_lme4_ui.py +0 -0
  289. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/compute/comp_stats.py +0 -0
  290. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/compute/comp_stats_ui.py +0 -0
  291. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/dcor/__init__.py +0 -0
  292. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/dcor/dcor_ui.py +0 -0
  293. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/export/__init__.py +0 -0
  294. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/export/e2data_ui.py +0 -0
  295. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/export/e2filter.py +0 -0
  296. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/export/e2filter_ui.py +0 -0
  297. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/export/e2plot_ui.py +0 -0
  298. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/helpers.py +0 -0
  299. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/main_ui.py +0 -0
  300. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/matrix/Readme.md +0 -0
  301. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/matrix/__init__.py +0 -0
  302. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/matrix/block_matrix.py +0 -0
  303. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/matrix/block_matrix_ui.py +0 -0
  304. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/matrix/data_matrix.py +0 -0
  305. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/matrix/plot_matrix.py +0 -0
  306. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/pipeline_plot_ui.py +0 -0
  307. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/preferences.py +0 -0
  308. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/preferences_ui.py +0 -0
  309. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/quick_view/__init__.py +0 -0
  310. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/quick_view/qv_event_getter.py +0 -0
  311. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/quick_view/qv_image_vis.py +0 -0
  312. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/quick_view/qv_main_ui.py +0 -0
  313. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/quick_view/qv_style.css +0 -0
  314. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/settings.py +0 -0
  315. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/update.py +0 -0
  316. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/widgets/bg_thread.py +0 -0
  317. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/widgets/bulk_list.py +0 -0
  318. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/widgets/bulk_list_ui.py +0 -0
  319. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/widgets/double_spin_box_nan.py +0 -0
  320. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/widgets/feature_combobox.py +0 -0
  321. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/widgets/get_path.py +0 -0
  322. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/widgets/key_value_table_widget.css +0 -0
  323. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/widgets/key_value_table_widget.py +0 -0
  324. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/widgets/qrangeslider.py +0 -0
  325. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/widgets/rangecontrol.py +0 -0
  326. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/widgets/rangecontrol_ui.py +0 -0
  327. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/widgets/simple_image_view.py +0 -0
  328. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/gui/widgets/wait_cursor.py +0 -0
  329. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/idiom.py +0 -0
  330. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/img/__init__.py +0 -0
  331. {dcscope-2.27.0/dcscope/img/icon-theme/breeze → dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark}/status/16/dialog-question.svg +0 -0
  332. {dcscope-2.27.0/dcscope/img/icon-theme/breeze → dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark}/status/22/dialog-question.svg +0 -0
  333. {dcscope-2.27.0/dcscope/img/icon-theme/breeze → dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark}/status/24/dialog-question.svg +0 -0
  334. {dcscope-2.27.0/dcscope/img/icon-theme/breeze → dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark}/status/64/dialog-error.svg +0 -0
  335. {dcscope-2.27.0/dcscope/img/icon-theme/breeze → dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark}/status/64/dialog-information.svg +0 -0
  336. {dcscope-2.27.0/dcscope/img/icon-theme/breeze → dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark}/status/64/dialog-question.svg +0 -0
  337. {dcscope-2.27.0/dcscope/img/icon-theme/breeze → dcscope-2.28.1/dcscope/img/icon-theme/dark/breeze-dark}/status/64/dialog-warning.svg +0 -0
  338. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/COPYING-ICONS +0 -0
  339. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/COPYING.LIB +0 -0
  340. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/README +0 -0
  341. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/16/application-exit.svg +0 -0
  342. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/16/code-context.svg +0 -0
  343. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/16/dialog-cancel.svg +0 -0
  344. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/16/dialog-messages.svg +0 -0
  345. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/16/dialog-ok-apply.svg +0 -0
  346. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/16/dialog-ok.svg +0 -0
  347. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/16/document-open-folder.svg +0 -0
  348. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/16/document-open.svg +0 -0
  349. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/16/document-save.svg +0 -0
  350. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/16/documentinfo.svg +0 -0
  351. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/16/draw-watercolor.svg +0 -0
  352. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/16/edit-clear-all.svg +0 -0
  353. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/16/edit-clear.svg +0 -0
  354. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/16/edit-paste.svg +0 -0
  355. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/16/globe.svg +0 -0
  356. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/16/gtk-preferences.svg +0 -0
  357. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/16/list-add.svg +0 -0
  358. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/16/messagebox_warning.svg +0 -0
  359. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/16/object-columns.svg +0 -0
  360. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/16/object-order-lower.svg +0 -0
  361. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/16/object-rows.svg +0 -0
  362. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/16/office-chart-line-stacked.svg +0 -0
  363. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/16/office-chart-ring.svg +0 -0
  364. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/16/office-chart-scatter.svg +0 -0
  365. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/16/path-mode-polyline.svg +0 -0
  366. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/16/preferences-activities.svg +0 -0
  367. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/16/remove.svg +0 -0
  368. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/16/search.svg +0 -0
  369. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/16/show-grid.svg +0 -0
  370. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/16/special_paste.svg +0 -0
  371. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/16/tools-wizard.svg +0 -0
  372. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/16/view-calendar-list.svg +0 -0
  373. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/16/view-filter.svg +0 -0
  374. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/16/view-list-tree.svg +0 -0
  375. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/16/view-statistics.svg +0 -0
  376. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/16/visibility.svg +0 -0
  377. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/22/application-exit.svg +0 -0
  378. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/22/code-context.svg +0 -0
  379. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/22/dialog-cancel.svg +0 -0
  380. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/22/dialog-messages.svg +0 -0
  381. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/22/dialog-ok-apply.svg +0 -0
  382. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/22/dialog-ok.svg +0 -0
  383. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/22/document-open-folder.svg +0 -0
  384. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/22/document-open.svg +0 -0
  385. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/22/document-save.svg +0 -0
  386. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/22/documentinfo.svg +0 -0
  387. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/22/draw-watercolor.svg +0 -0
  388. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/22/edit-clear-all.svg +0 -0
  389. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/22/edit-clear.svg +0 -0
  390. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/22/edit-paste.svg +0 -0
  391. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/22/globe.svg +0 -0
  392. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/22/gtk-preferences.svg +0 -0
  393. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/22/list-add.svg +0 -0
  394. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/22/messagebox_warning.svg +0 -0
  395. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/22/object-columns.svg +0 -0
  396. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/22/object-order-lower.svg +0 -0
  397. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/22/object-rows.svg +0 -0
  398. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/22/office-chart-line-stacked.svg +0 -0
  399. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/22/office-chart-ring.svg +0 -0
  400. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/22/office-chart-scatter.svg +0 -0
  401. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/22/path-mode-polyline.svg +0 -0
  402. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/22/preferences-activities.svg +0 -0
  403. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/22/remove.svg +0 -0
  404. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/22/special_paste.svg +0 -0
  405. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/22/tools-wizard.svg +0 -0
  406. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/22/view-calendar-list.svg +0 -0
  407. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/22/view-filter.svg +0 -0
  408. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/22/view-list-tree.svg +0 -0
  409. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/22/view-statistics.svg +0 -0
  410. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/22/visibility.svg +0 -0
  411. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/24/application-exit.svg +0 -0
  412. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/24/code-context.svg +0 -0
  413. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/24/dialog-cancel.svg +0 -0
  414. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/24/dialog-messages.svg +0 -0
  415. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/24/dialog-ok-apply.svg +0 -0
  416. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/24/document-open-folder.svg +0 -0
  417. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/24/document-open.svg +0 -0
  418. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/24/document-save.svg +0 -0
  419. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/24/draw-watercolor.svg +0 -0
  420. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/24/edit-clear.svg +0 -0
  421. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/24/edit-paste.svg +0 -0
  422. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/24/globe.svg +0 -0
  423. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/24/list-add.svg +0 -0
  424. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/24/messagebox_warning.svg +0 -0
  425. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/24/object-columns.svg +0 -0
  426. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/24/object-order-lower.svg +0 -0
  427. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/24/object-rows.svg +0 -0
  428. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/24/office-chart-line-stacked.svg +0 -0
  429. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/24/office-chart-ring.svg +0 -0
  430. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/24/office-chart-scatter.svg +0 -0
  431. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/24/path-mode-polyline.svg +0 -0
  432. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/24/preferences-activities.svg +0 -0
  433. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/24/special_paste.svg +0 -0
  434. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/24/tools-wizard.svg +0 -0
  435. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/24/view-calendar-list.svg +0 -0
  436. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/24/view-filter.svg +0 -0
  437. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/24/view-list-tree.svg +0 -0
  438. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/24/view-statistics.svg +0 -0
  439. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/32/application-exit.svg +0 -0
  440. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/32/dialog-cancel.svg +0 -0
  441. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/32/dialog-messages.svg +0 -0
  442. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/32/dialog-ok-apply.svg +0 -0
  443. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/32/dialog-ok.svg +0 -0
  444. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/32/document-open-folder.svg +0 -0
  445. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/32/document-open.svg +0 -0
  446. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/32/document-save.svg +0 -0
  447. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/32/gtk-preferences.svg +0 -0
  448. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/32/object-order-lower.svg +0 -0
  449. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/32/view-filter.svg +0 -0
  450. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/actions/32/view-list-tree.svg +0 -0
  451. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/places/16/folder-cloud.svg +0 -0
  452. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/places/16/folder.svg +0 -0
  453. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/places/22/folder-cloud.svg +0 -0
  454. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/places/22/folder.svg +0 -0
  455. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/places/24/folder-cloud.svg +0 -0
  456. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/places/24/folder.svg +0 -0
  457. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/places/32/folder-cloud.svg +0 -0
  458. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/places/32/folder.svg +0 -0
  459. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/places/64/folder-cloud.svg +0 -0
  460. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/places/64/folder.svg +0 -0
  461. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/status/16/dialog-error.svg +0 -0
  462. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/status/16/dialog-information.svg +0 -0
  463. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/status/16/dialog-warning.svg +0 -0
  464. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/status/22/dialog-error.svg +0 -0
  465. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/status/22/dialog-information.svg +0 -0
  466. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/breeze/status/22/dialog-warning.svg +0 -0
  467. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/dcscope/dcor.png +0 -0
  468. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/dcscope/edit-copy-anew.svg +0 -0
  469. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/dcscope/emodulus.svg +0 -0
  470. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/dcscope/filter_ray.svg +0 -0
  471. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/dcscope/region_channel.svg +0 -0
  472. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/dcscope/region_reservoir.svg +0 -0
  473. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/dcscope/rlang.svg +0 -0
  474. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/dcscope/statistical_significance.svg +0 -0
  475. {dcscope-2.27.0/dcscope/img/icon-theme → dcscope-2.28.1/dcscope/img/icon-theme/light}/index.theme +0 -0
  476. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/img/icon.png +0 -0
  477. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/img/splash.png +0 -0
  478. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/meta_tool.py +0 -0
  479. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/pipeline/__init__.py +0 -0
  480. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/pipeline/dataslot.py +0 -0
  481. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/pipeline/filter.py +0 -0
  482. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/pipeline/filter_ray.py +0 -0
  483. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/pipeline/plot.py +0 -0
  484. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope/util.py +0 -0
  485. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope.egg-info/dependency_links.txt +0 -0
  486. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope.egg-info/entry_points.txt +0 -0
  487. {dcscope-2.27.0 → dcscope-2.28.1}/dcscope.egg-info/top_level.txt +0 -0
  488. {dcscope-2.27.0 → dcscope-2.28.1}/docs/README.md +0 -0
  489. {dcscope-2.27.0 → dcscope-2.28.1}/docs/artwork/Readme.md +0 -0
  490. {dcscope-2.27.0 → dcscope-2.28.1}/docs/artwork/dcscope_icon.svg +0 -0
  491. {dcscope-2.27.0 → dcscope-2.28.1}/docs/artwork/dcscope_large_white.png +0 -0
  492. {dcscope-2.27.0 → dcscope-2.28.1}/docs/artwork/dcscope_large_white.svg +0 -0
  493. {dcscope-2.27.0 → dcscope-2.28.1}/docs/artwork/dcscope_splash.svg +0 -0
  494. {dcscope-2.27.0 → dcscope-2.28.1}/docs/artwork/favicon.ico +0 -0
  495. {dcscope-2.27.0 → dcscope-2.28.1}/docs/artwork/favicon.svg +0 -0
  496. {dcscope-2.27.0 → dcscope-2.28.1}/docs/conf.py +0 -0
  497. {dcscope-2.27.0 → dcscope-2.28.1}/docs/data/extension_fl1_density.py +0 -0
  498. {dcscope-2.27.0 → dcscope-2.28.1}/docs/dcscope.bib +0 -0
  499. {dcscope-2.27.0 → dcscope-2.28.1}/docs/extensions/fancy_include.py +0 -0
  500. {dcscope-2.27.0 → dcscope-2.28.1}/docs/extensions/github_changelog.py +0 -0
  501. {dcscope-2.27.0 → dcscope-2.28.1}/docs/extensions/rtd_pdf.py +0 -0
  502. {dcscope-2.27.0 → dcscope-2.28.1}/docs/figures/ATTRIBUTION +0 -0
  503. {dcscope-2.27.0 → dcscope-2.28.1}/docs/figures/area.png +0 -0
  504. {dcscope-2.27.0 → dcscope-2.28.1}/docs/figures/aspect.jpg +0 -0
  505. {dcscope-2.27.0 → dcscope-2.28.1}/docs/figures/brightness.jpg +0 -0
  506. {dcscope-2.27.0 → dcscope-2.28.1}/docs/figures/deform.jpg +0 -0
  507. {dcscope-2.27.0 → dcscope-2.28.1}/docs/figures/deform.py +0 -0
  508. {dcscope-2.27.0 → dcscope-2.28.1}/docs/figures/fluorescence.jpg +0 -0
  509. {dcscope-2.27.0 → dcscope-2.28.1}/docs/figures/fluorescence.py +0 -0
  510. {dcscope-2.27.0 → dcscope-2.28.1}/docs/figures/inert_ratio.jpg +0 -0
  511. {dcscope-2.27.0 → dcscope-2.28.1}/docs/figures/inert_ratio.py +0 -0
  512. {dcscope-2.27.0 → dcscope-2.28.1}/docs/figures/qg_countrate.jpg +0 -0
  513. {dcscope-2.27.0 → dcscope-2.28.1}/docs/figures/qg_countrate.py +0 -0
  514. {dcscope-2.27.0 → dcscope-2.28.1}/docs/figures/qg_filter_area.jpg +0 -0
  515. {dcscope-2.27.0 → dcscope-2.28.1}/docs/figures/qg_filter_area.py +0 -0
  516. {dcscope-2.27.0 → dcscope-2.28.1}/docs/figures/qg_filter_porosity.jpg +0 -0
  517. {dcscope-2.27.0 → dcscope-2.28.1}/docs/figures/qg_filter_porosity.py +0 -0
  518. {dcscope-2.27.0 → dcscope-2.28.1}/docs/figures/qg_filter_ratios.jpg +0 -0
  519. {dcscope-2.27.0 → dcscope-2.28.1}/docs/figures/qg_filter_ratios.py +0 -0
  520. {dcscope-2.27.0 → dcscope-2.28.1}/docs/figures/qg_time.jpg +0 -0
  521. {dcscope-2.27.0 → dcscope-2.28.1}/docs/figures/qg_time.py +0 -0
  522. {dcscope-2.27.0 → dcscope-2.28.1}/docs/figures/qg_youngs_modulus.py +0 -0
  523. {dcscope-2.27.0 → dcscope-2.28.1}/docs/figures/qg_youngs_modulus_15um.png +0 -0
  524. {dcscope-2.27.0 → dcscope-2.28.1}/docs/figures/qg_youngs_modulus_20um.png +0 -0
  525. {dcscope-2.27.0 → dcscope-2.28.1}/docs/figures/qg_youngs_modulus_30um.png +0 -0
  526. {dcscope-2.27.0 → dcscope-2.28.1}/docs/figures/qg_youngs_modulus_40um.png +0 -0
  527. {dcscope-2.27.0 → dcscope-2.28.1}/docs/figures/rtdc-setup.jpg +0 -0
  528. {dcscope-2.27.0 → dcscope-2.28.1}/docs/figures/volume.jpg +0 -0
  529. {dcscope-2.27.0 → dcscope-2.28.1}/docs/figures/volume.py +0 -0
  530. {dcscope-2.27.0 → dcscope-2.28.1}/docs/index.rst +0 -0
  531. {dcscope-2.27.0 → dcscope-2.28.1}/docs/requirements.txt +0 -0
  532. {dcscope-2.27.0 → dcscope-2.28.1}/docs/scrots/.gitignore +0 -0
  533. {dcscope-2.27.0 → dcscope-2.28.1}/docs/scrots/CD66+_CD14-.poly +0 -0
  534. {dcscope-2.27.0 → dcscope-2.28.1}/docs/scrots/Readme.md +0 -0
  535. {dcscope-2.27.0 → dcscope-2.28.1}/docs/scrots/make_scrots.sh +0 -0
  536. {dcscope-2.27.0 → dcscope-2.28.1}/docs/scrots/make_scrots_qg_dcor.py +0 -0
  537. {dcscope-2.27.0 → dcscope-2.28.1}/docs/scrots/make_scrots_qg_emodulus.py +0 -0
  538. {dcscope-2.27.0 → dcscope-2.28.1}/docs/scrots/make_scrots_qg_export.py +0 -0
  539. {dcscope-2.27.0 → dcscope-2.28.1}/docs/scrots/make_scrots_qg_extensions.py +0 -0
  540. {dcscope-2.27.0 → dcscope-2.28.1}/docs/scrots/make_scrots_qg_lme4.py +0 -0
  541. {dcscope-2.27.0 → dcscope-2.28.1}/docs/scrots/make_scrots_qg_lme4_diff.py +0 -0
  542. {dcscope-2.27.0 → dcscope-2.28.1}/docs/scrots/make_scrots_qg_statistics.py +0 -0
  543. {dcscope-2.27.0 → dcscope-2.28.1}/docs/scrots/qg_dcor_dlg.png +0 -0
  544. {dcscope-2.27.0 → dcscope-2.28.1}/docs/scrots/qg_emodulus_badtemp.png +0 -0
  545. {dcscope-2.27.0 → dcscope-2.28.1}/docs/scrots/qg_emodulus_config.png +0 -0
  546. {dcscope-2.27.0 → dcscope-2.28.1}/docs/scrots/qg_emodulus_feature.png +0 -0
  547. {dcscope-2.27.0 → dcscope-2.28.1}/docs/scrots/qg_emodulus_other.png +0 -0
  548. {dcscope-2.27.0 → dcscope-2.28.1}/docs/scrots/qg_export_data.png +0 -0
  549. {dcscope-2.27.0 → dcscope-2.28.1}/docs/scrots/qg_extensions.png +0 -0
  550. {dcscope-2.27.0 → dcscope-2.28.1}/docs/scrots/qg_lme4_diff_init.png +0 -0
  551. {dcscope-2.27.0 → dcscope-2.28.1}/docs/scrots/qg_lme4_diff_results.png +0 -0
  552. {dcscope-2.27.0 → dcscope-2.28.1}/docs/scrots/qg_lme4_init.png +0 -0
  553. {dcscope-2.27.0 → dcscope-2.28.1}/docs/scrots/qg_lme4_results.png +0 -0
  554. {dcscope-2.27.0 → dcscope-2.28.1}/docs/scrots/qg_statistics_folder.png +0 -0
  555. {dcscope-2.27.0 → dcscope-2.28.1}/docs/scrots/qg_statistics_init.png +0 -0
  556. {dcscope-2.27.0 → dcscope-2.28.1}/docs/scrots/scrots.so2 +0 -0
  557. {dcscope-2.27.0 → dcscope-2.28.1}/docs/scrots/ui_ana_basins.png +0 -0
  558. {dcscope-2.27.0 → dcscope-2.28.1}/docs/scrots/ui_ana_filter.png +0 -0
  559. {dcscope-2.27.0 → dcscope-2.28.1}/docs/scrots/ui_ana_logs.png +0 -0
  560. {dcscope-2.27.0 → dcscope-2.28.1}/docs/scrots/ui_ana_meta.png +0 -0
  561. {dcscope-2.27.0 → dcscope-2.28.1}/docs/scrots/ui_ana_slot.png +0 -0
  562. {dcscope-2.27.0 → dcscope-2.28.1}/docs/scrots/ui_ana_tables.png +0 -0
  563. {dcscope-2.27.0 → dcscope-2.28.1}/docs/scrots/ui_block_matrix.png +0 -0
  564. {dcscope-2.27.0 → dcscope-2.28.1}/docs/scrots/ui_main.png +0 -0
  565. {dcscope-2.27.0 → dcscope-2.28.1}/docs/scrots/ui_qv_event.png +0 -0
  566. {dcscope-2.27.0 → dcscope-2.28.1}/docs/scrots/ui_qv_poly.png +0 -0
  567. {dcscope-2.27.0 → dcscope-2.28.1}/docs/scrots/ui_qv_settings.png +0 -0
  568. {dcscope-2.27.0 → dcscope-2.28.1}/docs/sec_changelog.rst +0 -0
  569. {dcscope-2.27.0 → dcscope-2.28.1}/docs/sec_devs.rst +0 -0
  570. {dcscope-2.27.0 → dcscope-2.28.1}/docs/sec_getting_started.rst +0 -0
  571. {dcscope-2.27.0 → dcscope-2.28.1}/docs/sec_imprint.rst +0 -0
  572. {dcscope-2.27.0 → dcscope-2.28.1}/docs/sec_interface.rst +0 -0
  573. {dcscope-2.27.0 → dcscope-2.28.1}/docs/sec_qg_batch_stats.rst +0 -0
  574. {dcscope-2.27.0 → dcscope-2.28.1}/docs/sec_qg_consistency_check.rst +0 -0
  575. {dcscope-2.27.0 → dcscope-2.28.1}/docs/sec_qg_dcor.rst +0 -0
  576. {dcscope-2.27.0 → dcscope-2.28.1}/docs/sec_qg_export_data.rst +0 -0
  577. {dcscope-2.27.0 → dcscope-2.28.1}/docs/sec_qg_extensions.rst +0 -0
  578. {dcscope-2.27.0 → dcscope-2.28.1}/docs/sec_qg_filtering.rst +0 -0
  579. {dcscope-2.27.0 → dcscope-2.28.1}/docs/sec_qg_lme4.rst +0 -0
  580. {dcscope-2.27.0 → dcscope-2.28.1}/docs/sec_qg_youngs_modulus.rst +0 -0
  581. {dcscope-2.27.0 → dcscope-2.28.1}/docs/sec_quick_guides.rst +0 -0
  582. {dcscope-2.27.0 → dcscope-2.28.1}/docs/sec_rtdc_basics.rst +0 -0
  583. {dcscope-2.27.0 → dcscope-2.28.1}/docs/sec_z_bib.rst +0 -0
  584. {dcscope-2.27.0 → dcscope-2.28.1}/setup.cfg +0 -0
  585. {dcscope-2.27.0 → dcscope-2.28.1}/tests/README.md +0 -0
  586. {dcscope-2.27.0 → dcscope-2.28.1}/tests/data/artificial_with_image_bg.rtdc +0 -0
  587. {dcscope-2.27.0 → dcscope-2.28.1}/tests/data/blood_rbc_leukocytes.rtdc +0 -0
  588. {dcscope-2.27.0 → dcscope-2.28.1}/tests/data/blood_rbc_qpi_data.rtdc +0 -0
  589. {dcscope-2.27.0 → dcscope-2.28.1}/tests/data/calibration_beads_47.rtdc +0 -0
  590. {dcscope-2.27.0 → dcscope-2.28.1}/tests/data/cytoshot_blood.rtdc +0 -0
  591. {dcscope-2.27.0 → dcscope-2.28.1}/tests/data/empty_recording.rtdc +0 -0
  592. {dcscope-2.27.0 → dcscope-2.28.1}/tests/data/ext_feat_anc_plugin_ca.py +0 -0
  593. {dcscope-2.27.0 → dcscope-2.28.1}/tests/data/extreme_shear.rtdc +0 -0
  594. {dcscope-2.27.0 → dcscope-2.28.1}/tests/data/naiad-capture_blood_pipeline.rtdc +0 -0
  595. {dcscope-2.27.0 → dcscope-2.28.1}/tests/data/version_2_1_0_basic.so2 +0 -0
  596. {dcscope-2.27.0 → dcscope-2.28.1}/tests/data/version_2_1_2_plot_color_emodulus.so2 +0 -0
  597. {dcscope-2.27.0 → dcscope-2.28.1}/tests/data/version_2_1_6_no_events.so2 +0 -0
  598. {dcscope-2.27.0 → dcscope-2.28.1}/tests/data/version_2_5_0_dcor_lme4.so2 +0 -0
  599. {dcscope-2.27.0 → dcscope-2.28.1}/tests/data/version_2_5_0_dcor_lme4_diff.so2 +0 -0
  600. {dcscope-2.27.0 → dcscope-2.28.1}/tests/requirements.txt +0 -0
  601. {dcscope-2.27.0 → dcscope-2.28.1}/tests/test_extensions.py +0 -0
  602. {dcscope-2.27.0 → dcscope-2.28.1}/tests/test_gui_ana_meta.py +0 -0
  603. {dcscope-2.27.0 → dcscope-2.28.1}/tests/test_gui_basic.py +0 -0
  604. {dcscope-2.27.0 → dcscope-2.28.1}/tests/test_gui_bulk_emodulus.py +0 -0
  605. {dcscope-2.27.0 → dcscope-2.28.1}/tests/test_gui_compute_lme4.py +0 -0
  606. {dcscope-2.27.0 → dcscope-2.28.1}/tests/test_gui_compute_stats.py +0 -0
  607. {dcscope-2.27.0 → dcscope-2.28.1}/tests/test_gui_emodulus.py +0 -0
  608. {dcscope-2.27.0 → dcscope-2.28.1}/tests/test_gui_export_data.py +0 -0
  609. {dcscope-2.27.0 → dcscope-2.28.1}/tests/test_gui_export_filter.py +0 -0
  610. {dcscope-2.27.0 → dcscope-2.28.1}/tests/test_gui_matrix.py +0 -0
  611. {dcscope-2.27.0 → dcscope-2.28.1}/tests/test_gui_pipeline_plot.py +0 -0
  612. {dcscope-2.27.0 → dcscope-2.28.1}/tests/test_gui_reorder_datasets.py +0 -0
  613. {dcscope-2.27.0 → dcscope-2.28.1}/tests/test_gui_update.py +0 -0
  614. {dcscope-2.27.0 → dcscope-2.28.1}/tests/test_pipeline_core.py +0 -0
  615. {dcscope-2.27.0 → dcscope-2.28.1}/tests/test_pipeline_filter_ray.py +0 -0
  616. {dcscope-2.27.0 → dcscope-2.28.1}/tests/test_pipeline_filter_ray_2.py +0 -0
  617. {dcscope-2.27.0 → dcscope-2.28.1}/tests/test_session.py +0 -0
  618. {dcscope-2.27.0 → dcscope-2.28.1}/tests/test_util.py +0 -0
  619. {dcscope-2.27.0 → dcscope-2.28.1}/tests-manual/.gitignore +0 -0
  620. {dcscope-2.27.0 → dcscope-2.28.1}/tests-manual/Readme.rst +0 -0
  621. {dcscope-2.27.0 → dcscope-2.28.1}/tests-manual/plot-export_log-large-points-export-png_expected.png +0 -0
  622. {dcscope-2.27.0 → dcscope-2.28.1}/tests-manual/plot-export_log-large-points-export-svg_expected.svg +0 -0
  623. {dcscope-2.27.0 → dcscope-2.28.1}/tests-manual/plot-export_scatter-and-contour-export-png_expected.png +0 -0
  624. {dcscope-2.27.0 → dcscope-2.28.1}/tests-manual/plot-export_scatter-and-contour-export-svg_expected.svg +0 -0
  625. {dcscope-2.27.0 → dcscope-2.28.1}/tests-manual/plot-export_scatter-and-contour-subplot1-export-png_expected.png +0 -0
  626. {dcscope-2.27.0 → dcscope-2.28.1}/tests-manual/plot-export_scatter-and-contour-subplot1-export-svg_expected.svg +0 -0
  627. {dcscope-2.27.0 → dcscope-2.28.1}/tests-manual/plot-export_scatter-and-contour-subplot2-export-png_expected.png +0 -0
  628. {dcscope-2.27.0 → dcscope-2.28.1}/tests-manual/plot-export_scatter-and-contour-subplot2-export-svg_expected.svg +0 -0
  629. {dcscope-2.27.0 → dcscope-2.28.1}/tests-manual/plot-export_scatter-long-title-export-png_expected.png +0 -0
  630. {dcscope-2.27.0 → dcscope-2.28.1}/tests-manual/run-tests.sh +0 -0
  631. {dcscope-2.27.0 → dcscope-2.28.1}/ui/analysis/ana_basins.ui +0 -0
  632. {dcscope-2.27.0 → dcscope-2.28.1}/ui/analysis/ana_log.ui +0 -0
  633. {dcscope-2.27.0 → dcscope-2.28.1}/ui/analysis/ana_meta.ui +0 -0
  634. {dcscope-2.27.0 → dcscope-2.28.1}/ui/analysis/ana_plot.ui +0 -0
  635. {dcscope-2.27.0 → dcscope-2.28.1}/ui/analysis/ana_slot.ui +0 -0
  636. {dcscope-2.27.0 → dcscope-2.28.1}/ui/analysis/ana_tables.ui +0 -0
  637. {dcscope-2.27.0 → dcscope-2.28.1}/ui/analysis/ana_view.ui +0 -0
  638. {dcscope-2.27.0 → dcscope-2.28.1}/ui/analysis/dlg_slot_reorder.ui +0 -0
  639. {dcscope-2.27.0 → dcscope-2.28.1}/ui/bulk/bulk_emodulus.ui +0 -0
  640. {dcscope-2.27.0 → dcscope-2.28.1}/ui/compute/comp_lme4.ui +0 -0
  641. {dcscope-2.27.0 → dcscope-2.28.1}/ui/compute/comp_lme4_dataset.ui +0 -0
  642. {dcscope-2.27.0 → dcscope-2.28.1}/ui/compute/comp_lme4_results.ui +0 -0
  643. {dcscope-2.27.0 → dcscope-2.28.1}/ui/compute/comp_stats.ui +0 -0
  644. {dcscope-2.27.0 → dcscope-2.28.1}/ui/dcor/dcor.ui +0 -0
  645. {dcscope-2.27.0 → dcscope-2.28.1}/ui/export/e2data.ui +0 -0
  646. {dcscope-2.27.0 → dcscope-2.28.1}/ui/export/e2filter.ui +0 -0
  647. {dcscope-2.27.0 → dcscope-2.28.1}/ui/export/e2plot.ui +0 -0
  648. {dcscope-2.27.0 → dcscope-2.28.1}/ui/main.ui +0 -0
  649. {dcscope-2.27.0 → dcscope-2.28.1}/ui/matrix/block_matrix.ui +0 -0
  650. {dcscope-2.27.0 → dcscope-2.28.1}/ui/pipeline_plot.ui +0 -0
  651. {dcscope-2.27.0 → dcscope-2.28.1}/ui/preferences.ui +0 -0
  652. {dcscope-2.27.0 → dcscope-2.28.1}/ui/quick_view/qv_main.ui +0 -0
  653. {dcscope-2.27.0 → dcscope-2.28.1}/ui/run_uic.sh +0 -0
  654. {dcscope-2.27.0 → dcscope-2.28.1}/ui/widgets/bulk_list.ui +0 -0
  655. {dcscope-2.27.0 → dcscope-2.28.1}/ui/widgets/rangecontrol.ui +0 -0
@@ -34,6 +34,9 @@ jobs:
34
34
  python -m pip install --upgrade pip
35
35
  pip install setuptools wheel twine
36
36
  pip install .
37
+ # https://github.com/DC-analysis/DCscope/issues/228
38
+ # install pyqtgraph > 0.14.0 fixing SVG export issue
39
+ pip install git+https://github.com/pyqtgraph/pyqtgraph.git@4683d7a2d3f2b0a8412618a41dc780bd9cce339b
37
40
  - name: Build windows executable
38
41
  if: runner.os == 'windows'
39
42
  working-directory: ./build-recipes
@@ -1,3 +1,38 @@
1
+ 2.28.1
2
+ - reg: limits of box filters incorrectly shown when QuickView was active
3
+ - enh: `Pipeline.get_min_max_coarse` handles inf data
4
+ - enh: align-right box filter selection button in Analysis View
5
+ - enh: disable "Apply" button when changing box filters in Analysis View
6
+ - build: include latest version of pyqtgraph to fix SVG export issue (#228)
7
+ 2.28.0
8
+ - feat: introduce `TaskManager` and `TaskWorker` for more progress bars
9
+ - fix: plot resized when applying plot settings in AnalysisView
10
+ - fix: memory leak in plotting (plot elements were not removed)
11
+ - fix: KDE contour spacing test only done on largest percentile contour
12
+ - fix: deleting last filter in Analysis View caused `IndexError`
13
+ - fix: deleting last plot in Analysis View caused `IndexError`
14
+ - reg: subplot export via context menu did not work
15
+ - reg: dot-menu for plot matrix element removed in refactoring process
16
+ - enh: show number of tasks running in status bar
17
+ - enh: migrate data file export to `Taskmanager`
18
+ - enh: show progress bar when opening a session (uses `Taskmanager`)
19
+ - enh: enable rubberband-resize for all subwindows
20
+ - enh: maximize main window before loading session
21
+ - enh: streamline session loading (remove duplicate plotting calls)
22
+ - enh: move plot data checking to background thread
23
+ - enh: dark mode icons (#226)
24
+ - setup: bump dclab to 0.71.9 (thread-safety for filtering)
25
+ - docs: update screenshots (and recipes)
26
+ - ref: scatter plot data generation done in background thread
27
+ - ref: contour plot data generation done in background thread
28
+ - ref: use `TaskManager` for computing plot data in QuickView
29
+ - ref: cleanup main.py, session.py with the help of pyright
30
+ - ref: move custom colorbar definitions to `colorbaritem`
31
+ - ref: put heavy-duty plotting code into `pipeline_plot_compute`
32
+ - ref: separate PipelinePlotItem into its own submodule
33
+ - ref: compute brush color in background thread alongside KDE
34
+ - ref: `zoomin_contours` calls `compute_contours_from_state` unneccesarily
35
+ - tests: update manual tests session with correct contour spacing
1
36
  2.27.0
2
37
  - fix: delay on selecting "Plot" tab when "Marker hue" was set to "Feature"
3
38
  - fix: switching tabs "View/Features" in QuickView did not update event data
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dcscope
3
- Version: 2.27.0
3
+ Version: 2.28.1
4
4
  Summary: User interface for deformability cytometry (DC)
5
5
  Author: Benedikt Hartmann, Eoghan O'Connell, Maximilian Schlögel, Paul Müller, Raghava Alajangi
6
6
  Maintainer-email: Paul Müller <dev@craban.de>
@@ -16,7 +16,7 @@ Classifier: Intended Audience :: Science/Research
16
16
  Requires-Python: <4,>=3.9
17
17
  Description-Content-Type: text/x-rst
18
18
  License-File: LICENSE
19
- Requires-Dist: dclab[dcor,export,http,s3]>=0.71.7
19
+ Requires-Dist: dclab[dcor,export,http,s3]>=0.71.9
20
20
  Requires-Dist: h5py>=2.8.0
21
21
  Requires-Dist: numpy>=1.21
22
22
  Requires-Dist: pygments
@@ -1,14 +1,33 @@
1
1
  def main(splash=True):
2
2
  import importlib.resources
3
3
  import sys
4
+ import warnings
4
5
 
5
6
  from PyQt6.QtWidgets import QApplication
6
- from PyQt6.QtCore import QEventLoop
7
+ from PyQt6.QtCore import QEventLoop, Qt
8
+ from PyQt6 import QtGui
7
9
  # import before creating application
8
10
  import pyqtgraph # noqa: F401
9
11
 
10
12
  app = QApplication(sys.argv)
11
13
 
14
+ style_hints = QApplication.styleHints()
15
+ if style_hints.colorScheme() == Qt.ColorScheme.Dark:
16
+ theme_shade = "dark"
17
+ else:
18
+ theme_shade = "light"
19
+
20
+ # set Qt icon theme search path
21
+ ref = importlib.resources.files("dcscope.img") / "icon.png"
22
+ with importlib.resources.as_file(ref) as icon_path:
23
+ theme_dir = icon_path.with_name("icon-theme")
24
+ theme_path = theme_dir / theme_shade
25
+ if theme_path.exists():
26
+ QtGui.QIcon.setThemeSearchPaths([str(theme_path)])
27
+ QtGui.QIcon.setThemeName(".")
28
+ else:
29
+ warnings.warn("DCscope theme path not available")
30
+
12
31
  if splash:
13
32
  from PyQt6.QtWidgets import QSplashScreen
14
33
  from PyQt6.QtGui import QPixmap
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '2.27.0'
22
- __version_tuple__ = version_tuple = (2, 27, 0)
21
+ __version__ = version = '2.28.1'
22
+ __version_tuple__ = version_tuple = (2, 28, 1)
23
23
 
24
- __commit_id__ = commit_id = 'g762a62993'
24
+ __commit_id__ = commit_id = 'g204651dbc'
@@ -293,6 +293,11 @@ class FilterPanel(QtWidgets.QWidget):
293
293
  filt_index = None
294
294
  self.update_content(filt_index)
295
295
 
296
+ filt_rem = pp_dict.get("filter_removed")
297
+ if filt_rem is not None:
298
+ # remove filter item from list/view
299
+ self.update_content()
300
+
296
301
  qv_dict = data.get("quickview")
297
302
  if qv_dict and qv_dict.get("enabled"):
298
303
  if self.isVisible():
@@ -316,6 +321,7 @@ class FilterPanel(QtWidgets.QWidget):
316
321
  def on_moreless(self):
317
322
  """User wants to choose box filters"""
318
323
  if not self._box_edit_view:
324
+ self.ui.pushButton_apply.setEnabled(False)
319
325
  # get available features to show
320
326
  features, _ = self.get_features_labels()
321
327
  # create missing range controls if applicable (e.g. ml_score_???)
@@ -332,6 +338,7 @@ class FilterPanel(QtWidgets.QWidget):
332
338
  self.ui.label_box_edit.setVisible(True)
333
339
  self._box_edit_view = True
334
340
  else:
341
+ self.ui.pushButton_apply.setEnabled(True)
335
342
  # Hide all filters that are not active
336
343
  for _, rc in self._box_range_controls.items():
337
344
  if not rc.is_active():
@@ -359,11 +366,14 @@ class FilterPanel(QtWidgets.QWidget):
359
366
  if self.pipeline and self.pipeline.filters:
360
367
  # remember the previous filter index and make sure it is sane
361
368
  prev_index = self.ui.comboBox_filters.currentIndex()
362
- if prev_index is None or prev_index < 0:
369
+ if (
370
+ prev_index is None
371
+ or prev_index < 0
372
+ or prev_index > len(self.filter_ids) - 1
373
+ ):
363
374
  prev_index = len(self.filter_ids) - 1
364
375
 
365
376
  self.setEnabled(True)
366
- self.update_polygon_filters()
367
377
  # update combobox
368
378
  self.ui.comboBox_filters.blockSignals(True)
369
379
  if filt_index is None or filt_index < 0:
@@ -376,6 +386,9 @@ class FilterPanel(QtWidgets.QWidget):
376
386
  [filt.name for filt in self.pipeline.filters])
377
387
  self.ui.comboBox_filters.setCurrentIndex(filt_index)
378
388
  self.ui.comboBox_filters.blockSignals(False)
389
+
390
+ self.update_polygon_filters()
391
+
379
392
  # populate content
380
393
  filt = self.pipeline.filters[filt_index]
381
394
  state = filt.__getstate__()
@@ -393,12 +406,14 @@ class FilterPanel(QtWidgets.QWidget):
393
406
  # compute min/max values
394
407
  mmdict = {}
395
408
  for feat in self.active_box_features:
396
- mmdict[feat] = self.pipeline.get_min_max(feat=feat)
409
+ mmdict[feat] = self.pipeline.get_min_max_coarse(feat=feat)
397
410
  # update used features
398
411
  for feat in self._box_range_controls:
399
412
  rc = self._box_range_controls[feat]
400
413
  if feat in mmdict:
401
414
  rc.setLimits(*mmdict[feat])
415
+ else:
416
+ print("Ignoring feature", feat)
402
417
  if self.current_filter is not None:
403
418
  state = self.current_filter.__getstate__()
404
419
  if feat not in state["box filters"]:
@@ -118,7 +118,7 @@ class Ui_Form(object):
118
118
  self.verticalLayout_3.addWidget(self.label_box_edit)
119
119
  self.toolButton_moreless = QtWidgets.QToolButton(parent=self.groupBox_box)
120
120
  self.toolButton_moreless.setObjectName("toolButton_moreless")
121
- self.verticalLayout_3.addWidget(self.toolButton_moreless)
121
+ self.verticalLayout_3.addWidget(self.toolButton_moreless, 0, QtCore.Qt.AlignmentFlag.AlignRight)
122
122
  self.verticalLayout_5.addWidget(self.groupBox_box)
123
123
  self.groupBox = QtWidgets.QGroupBox(parent=Form)
124
124
  sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Policy.Preferred, QtWidgets.QSizePolicy.Policy.Minimum)
@@ -556,6 +556,8 @@ class PlotPanel(QtWidgets.QWidget):
556
556
  else:
557
557
  plot_index = None
558
558
  self.update_content(plot_index)
559
+ elif pp_dict.get("plot_removed"):
560
+ self.update_content()
559
561
  elif pp_dict.get("plot_changed") == self.current_plot.identifier:
560
562
  self.update_content()
561
563
 
@@ -649,7 +651,11 @@ class PlotPanel(QtWidgets.QWidget):
649
651
  if self._pipeline is not None and self.plot_ids:
650
652
  # remember the previous plot index and make sure it is sane
651
653
  prev_index = self.ui.comboBox_plots.currentIndex()
652
- if prev_index is None or prev_index < 0:
654
+ if (
655
+ prev_index is None
656
+ or prev_index < 0
657
+ or prev_index > len(self.plot_ids) - 1
658
+ ):
653
659
  prev_index = len(self.plot_ids) - 1
654
660
 
655
661
  self.setEnabled(True)
@@ -1,6 +1,8 @@
1
1
  import logging
2
2
  import pathlib
3
+ import threading
3
4
  import traceback
5
+ from typing import Callable
4
6
 
5
7
  from PyQt6 import QtCore, QtTest, QtWidgets
6
8
 
@@ -8,6 +10,7 @@ import dclab
8
10
 
9
11
  from ...util import get_valid_filename
10
12
  from ..._version import version
13
+ from ..tasks import TaskManager, TaskAbortError
11
14
  from ..widgets import get_directory, show_wait_cursor
12
15
  from ..widgets.feature_combobox import HIDDEN_FEATURES
13
16
  from .e2data_ui import Ui_Dialog
@@ -138,6 +141,8 @@ class ExportData(QtWidgets.QDialog):
138
141
  else:
139
142
  features = self.ui.bulklist_features.get_selection()
140
143
 
144
+ tm = TaskManager(self)
145
+
141
146
  # create dummy progress dialog
142
147
  prog = QtWidgets.QProgressDialog("Exporting...", "Abort", 1,
143
148
  10, self)
@@ -156,7 +161,7 @@ class ExportData(QtWidgets.QDialog):
156
161
  QtWidgets.QApplication.processEvents(
157
162
  QtCore.QEventLoop.ProcessEventsFlag.AllEvents, 300)
158
163
 
159
- tasks = []
164
+ jobs = []
160
165
 
161
166
  for slot_index, path in slots_n_paths:
162
167
  ds = self.pipeline.get_dataset(slot_index)
@@ -174,7 +179,7 @@ class ExportData(QtWidgets.QDialog):
174
179
  + f"They are not exported to .{self.file_format}!")
175
180
  )
176
181
  if self.file_format == "rtdc":
177
- tasks.append((
182
+ jobs.append((
178
183
  ds.export.hdf5,
179
184
  dict(path=path,
180
185
  features=[ff for ff in features if ff in ds.features],
@@ -185,7 +190,7 @@ class ExportData(QtWidgets.QDialog):
185
190
  override=False)
186
191
  ))
187
192
  elif self.file_format == "fcs":
188
- tasks.append((
193
+ jobs.append((
189
194
  ds.export.fcs,
190
195
  dict(path=path,
191
196
  features=[ff for ff in features if ff in ds.features],
@@ -193,7 +198,7 @@ class ExportData(QtWidgets.QDialog):
193
198
  override=False)
194
199
  ))
195
200
  elif self.file_format == "tsv":
196
- tasks.append((
201
+ jobs.append((
197
202
  ds.export.tsv,
198
203
  dict(path=path,
199
204
  features=[ff for ff in features if ff in ds.features],
@@ -201,43 +206,52 @@ class ExportData(QtWidgets.QDialog):
201
206
  override=False)
202
207
  ))
203
208
  elif self.ui.radioButton_avi.isChecked():
204
- tasks.append((
209
+ jobs.append((
205
210
  ds.export.avi,
206
211
  dict(path=path,
207
212
  **self.ui.comboBox_codec.currentData())
208
213
  ))
209
214
 
210
- logger.info(f"Exporting {len(tasks)} objects")
211
-
212
- exporter = ExportThread(self, tasks)
213
- exporter.communicate_progress.connect(prog.setValue)
214
- exporter.communicate_message.connect(prog.setLabelText)
215
- prog.canceled.connect(exporter.request_abort)
216
- exporter.start()
215
+ logger.info(f"Exporting {len(jobs)} objects")
216
+
217
+ task = {"func": perform_export,
218
+ "args": [],
219
+ "kwargs": {"jobs": jobs}
220
+ }
221
+ tm.add_task(
222
+ task=task,
223
+ topic="export",
224
+ communicate_progress=prog.setValue,
225
+ communicate_message=prog.setLabelText,
226
+ )
217
227
 
218
228
  while True:
219
- QtWidgets.QApplication.processEvents(
220
- QtCore.QEventLoop.ProcessEventsFlag.AllEvents, 300)
221
229
  QtTest.QTest.qWait(500)
222
- if prog.wasCanceled() or exporter.isFinished():
223
- # This will break the loop but possibly keep the exporter
224
- # alive. We hope that the exporter will eventually be
225
- # terminated.
230
+ if prog.wasCanceled():
231
+ tm.abort_task(task)
232
+ while tm.is_task_running(task):
233
+ # force user to wait until the task properly aborted
234
+ prog.show()
235
+ prog.setLabelText("Aborting, please wait...")
236
+ prog.setMaximum(0)
237
+ prog.setMinimum(0)
238
+ QtTest.QTest.qWait(500)
239
+ break
240
+ elif tm.is_task_finished(task):
241
+ result = tm.get_task_result(task)
242
+ if result["jobs_failed"]:
243
+ info_string = "\n".join(
244
+ [f"- {kw['path']}" for _, kw in result["jobs_failed"]])
245
+ QtWidgets.QMessageBox.critical(
246
+ self,
247
+ f"Error exporting {len(result['jobs_failed'])} "
248
+ f"datasets",
249
+ f"Could not export to the following "
250
+ f"paths:\n{info_string}")
226
251
  break
227
252
 
228
- prog.setValue(pend)
229
-
230
- if prog.wasCanceled():
231
- exporter.terminate()
232
- else:
233
- exporter.wait()
234
-
235
- if exporter.failed_tasks:
236
- info_string = "\n".join(
237
- [f"- {kw['path']}" for _, kw in exporter.failed_tasks])
238
- QtWidgets.QMessageBox.critical(
239
- self, f"Error exporting {len(exporter.failed_tasks)} objects",
240
- f"Could not export to the following paths:\n{info_string}")
253
+ prog.deleteLater()
254
+ tm.close()
241
255
 
242
256
  def get_export_filenames(self):
243
257
  """Compute names for exporting data, avoiding overriding anything
@@ -350,52 +364,62 @@ class ExportData(QtWidgets.QDialog):
350
364
  self.on_select_features_innate()
351
365
 
352
366
 
353
- class ExportAbortError(BaseException):
354
- """Used for aborting data export via progress_callback"""
355
- pass
356
-
357
-
358
- class ExportThread(QtCore.QThread):
359
- communicate_progress = QtCore.pyqtSignal(int)
360
- communicate_message = QtCore.pyqtSignal(str)
361
-
362
- def __init__(self, parent, tasks):
363
- super(ExportThread, self).__init__(parent)
364
- self.abort = False
365
- self.tasks = tasks
366
- self.current_path = None
367
- self.tasks_done = []
368
- self.failed_tasks = []
369
- self.setObjectName(self.__class__.__name__)
370
-
371
- def progress_callback(self, progress, message):
372
- cur_pos = int((len(self.tasks_done) + progress) * 100)
373
- self.communicate_progress.emit(cur_pos)
374
- self.communicate_message.emit(f"{self.current_path.name} ({message})")
375
- if self.abort:
376
- raise ExportAbortError("User aborted")
377
-
378
- def run(self):
379
- for ii in range(len(self.tasks)):
380
- if self.abort:
381
- break
382
- func, kwargs = self.tasks.pop(0)
383
- self.current_path = pathlib.Path(kwargs["path"])
384
- try:
385
- func(progress_callback=self.progress_callback, **kwargs)
386
- except ExportAbortError:
387
- # remove current path
388
- self.current_path.unlink(missing_ok=True)
389
- break
390
- except BaseException:
391
- # remove current path
392
- self.current_path.unlink(missing_ok=True)
393
- logger.error(traceback.format_exc())
394
- self.failed_tasks.append((func, kwargs))
395
- continue
396
- finally:
397
- self.tasks_done.append((func, kwargs))
367
+ def perform_export(jobs: list[tuple[Callable, dict]],
368
+ communicate_progress: Callable,
369
+ communicate_message: Callable,
370
+ event_abort: threading.Event
371
+ ) -> dict[str, list[tuple[Callable, dict]]]:
372
+ """Perform data export
373
+
374
+ Parameters
375
+ ----------
376
+ jobs:
377
+ list of job dictionaries. Each job consists of a callable and the
378
+ corresponding keyword arguments.
379
+ communicate_progress:
380
+ method for communicating the overall progress
381
+ (used for progress bar)
382
+ communicate_message:
383
+ method for communicating the current progress message
384
+ (used for progress bar)
385
+ event_abort:
386
+ an event that can be set to abort the export
387
+
388
+ Returns
389
+ -------
390
+ result:
391
+ dictionary with "jobs_done" and "jobs_failed" lists
392
+ """
393
+ jobs_failed = []
394
+ jobs_done = []
395
+
396
+ def handle_export_progress(idx, progress, message):
397
+ communicate_progress(int((idx + progress)*100))
398
+ communicate_message(message)
399
+
400
+ for ii in range(len(jobs)):
401
+ if event_abort.is_set():
402
+ break
403
+ func, kwargs = jobs.pop(0)
404
+ current_path = pathlib.Path(kwargs["path"])
405
+ try:
406
+ func(progress_callback=lambda p, m: (
407
+ handle_export_progress(ii, p, m)),
408
+ **kwargs)
409
+ except TaskAbortError:
410
+ # cleanup: remove current path
411
+ current_path.unlink(missing_ok=True)
412
+ raise
413
+ except BaseException:
414
+ # remove current path
415
+ current_path.unlink(missing_ok=True)
416
+ logger.error(traceback.format_exc())
417
+ jobs_failed.append((func, kwargs))
418
+ continue
419
+ else:
420
+ jobs_done.append((func, kwargs))
398
421
 
399
- @QtCore.pyqtSlot()
400
- def request_abort(self):
401
- self.abort = True
422
+ return {
423
+ "jobs_done": jobs_done,
424
+ "jobs_failed": jobs_failed,
425
+ }
@@ -60,7 +60,7 @@ class ExportPlot(QtWidgets.QDialog):
60
60
  'Output Folder')
61
61
  if path:
62
62
  for ii, plot in enumerate(self.pipeline.plots):
63
- fn = "SO-plot_{}_{}.{}".format(ii, plot.name, fmt)
63
+ fn = f"SO-plot_{ii}_{plot.name}.{fmt}"
64
64
  # remove bad characters from file name
65
65
  fn = get_valid_filename(fn)
66
66
  fnames[plot.identifier] = pathlib.Path(path) / fn