histomicsui 1.7.1.dev16__tar.gz → 1.7.2__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 (184) hide show
  1. {histomicsui-1.7.1.dev16/histomicsui.egg-info → histomicsui-1.7.2}/PKG-INFO +2 -2
  2. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/docs/config_options.rst +14 -0
  3. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/dialogs/saveAnnotation.js +5 -5
  4. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/panels/AnnotationSelector.js +5 -19
  5. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/panels/DrawWidget.js +20 -4
  6. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/templates/panels/drawWidget.pug +4 -1
  7. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/views/body/ImageView.js +78 -5
  8. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/views/popover/AnnotationContextMenu.js +3 -3
  9. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2/histomicsui.egg-info}/PKG-INFO +2 -2
  10. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui.egg-info/requires.txt +1 -1
  11. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/setup.py +1 -1
  12. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/.circleci/config.yml +0 -0
  13. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/.editorconfig +0 -0
  14. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/.git-blame-ignore-revs +0 -0
  15. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/.gitignore +0 -0
  16. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/.pre-commit-config.yaml +0 -0
  17. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/LICENSE +0 -0
  18. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/MANIFEST.in +0 -0
  19. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/NOTICE +0 -0
  20. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/README.rst +0 -0
  21. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/codecov.yml +0 -0
  22. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/docs/controls.rst +0 -0
  23. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/docs/images/difference.gif +0 -0
  24. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/docs/images/intersect.gif +0 -0
  25. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/docs/images/union.gif +0 -0
  26. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/docs/images/xor.gif +0 -0
  27. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/docs/slicer_cli_plugins.rst +0 -0
  28. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/__init__.py +0 -0
  29. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/constants.py +0 -0
  30. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/handlers.py +0 -0
  31. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/models/__init__.py +0 -0
  32. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/models/aperio.py +0 -0
  33. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/models/case.py +0 -0
  34. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/models/cohort.py +0 -0
  35. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/models/image.py +0 -0
  36. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/models/meta.py +0 -0
  37. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/models/pathology.py +0 -0
  38. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/models/slide.py +0 -0
  39. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/rest/__init__.py +0 -0
  40. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/rest/aperio.py +0 -0
  41. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/rest/hui_resource.py +0 -0
  42. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/rest/image_browse_resource.py +0 -0
  43. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/rest/system.py +0 -0
  44. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/rest/tcga.py +0 -0
  45. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/app.js +0 -0
  46. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/collections/StyleCollection.js +0 -0
  47. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/collections/UserCollection.js +0 -0
  48. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/collections/index.js +0 -0
  49. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/dialogs/confirmDialog.js +0 -0
  50. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/dialogs/editElement.js +0 -0
  51. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/dialogs/editRegionOfInterest.js +0 -0
  52. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/dialogs/editStyleGroups.js +0 -0
  53. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/dialogs/index.js +0 -0
  54. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/dialogs/metadataPlot.js +0 -0
  55. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/dialogs/openAnnotatedImage.js +0 -0
  56. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/dialogs/openImage.js +0 -0
  57. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/events.js +0 -0
  58. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/index.js +0 -0
  59. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/main.js +0 -0
  60. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/models/StyleModel.js +0 -0
  61. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/models/index.js +0 -0
  62. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/package.json +0 -0
  63. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/panels/FrameSelectorWidget.js +0 -0
  64. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/panels/MetadataPlot.js +0 -0
  65. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/panels/MetadataWidget.js +0 -0
  66. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/panels/OverviewWidget.js +0 -0
  67. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/panels/RegionSelector.js +0 -0
  68. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/panels/ZoomWidget.js +0 -0
  69. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/panels/index.js +0 -0
  70. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/router.js +0 -0
  71. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/routes.js +0 -0
  72. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/static/favicon.png +0 -0
  73. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/stylesheets/body/configView.styl +0 -0
  74. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/stylesheets/body/image.styl +0 -0
  75. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/stylesheets/dialogs/editStyleGroups.styl +0 -0
  76. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/stylesheets/dialogs/metadataPlot.styl +0 -0
  77. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/stylesheets/dialogs/openAnnotatedImage.styl +0 -0
  78. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/stylesheets/dialogs/saveAnnotation.styl +0 -0
  79. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/stylesheets/layout/header.styl +0 -0
  80. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/stylesheets/layout/headerAnalyses.styl +0 -0
  81. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/stylesheets/layout/headerImage.styl +0 -0
  82. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/stylesheets/layout/layout.styl +0 -0
  83. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/stylesheets/panels/annotationSelector.styl +0 -0
  84. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/stylesheets/panels/drawWidget.styl +0 -0
  85. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/stylesheets/panels/frameSelectorWidget.styl +0 -0
  86. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/stylesheets/panels/metadataPlot.styl +0 -0
  87. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/stylesheets/panels/metadataWidget.styl +0 -0
  88. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/stylesheets/panels/overviewWidget.styl +0 -0
  89. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/stylesheets/panels/regionSelector.styl +0 -0
  90. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/stylesheets/panels/zoomWidget.styl +0 -0
  91. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/stylesheets/popover/annotationContextMenu.styl +0 -0
  92. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/stylesheets/popover/annotationPopover.styl +0 -0
  93. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/stylesheets/views/itemList.styl +0 -0
  94. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/stylesheets/views/searchResultsView.styl +0 -0
  95. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/templates/body/configView.pug +0 -0
  96. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/templates/body/image.pug +0 -0
  97. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/templates/dialogs/annotatedImageList.pug +0 -0
  98. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/templates/dialogs/confirmDialog.pug +0 -0
  99. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/templates/dialogs/editElement.pug +0 -0
  100. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/templates/dialogs/editRegionOfInterest.pug +0 -0
  101. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/templates/dialogs/editStyleGroups.pug +0 -0
  102. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/templates/dialogs/metadataPlot.pug +0 -0
  103. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/templates/dialogs/openAnnotatedImage.pug +0 -0
  104. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/templates/dialogs/openImage.pug +0 -0
  105. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/templates/dialogs/saveAnnotation.pug +0 -0
  106. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/templates/layout/header.pug +0 -0
  107. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/templates/layout/headerAnalyses.pug +0 -0
  108. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/templates/layout/headerImage.pug +0 -0
  109. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/templates/layout/headerUser.pug +0 -0
  110. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/templates/layout/layout.pug +0 -0
  111. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/templates/panels/annotationSelector.pug +0 -0
  112. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/templates/panels/drawWidgetElement.pug +0 -0
  113. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/templates/panels/frameSelectorWidget.pug +0 -0
  114. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/templates/panels/metadataPlot.pug +0 -0
  115. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/templates/panels/metadataWidgetPanel.pug +0 -0
  116. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/templates/panels/overviewWidget.pug +0 -0
  117. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/templates/panels/panel.pug +0 -0
  118. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/templates/panels/regionSelector.pug +0 -0
  119. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/templates/panels/zoomWidget.pug +0 -0
  120. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/templates/popover/annotationContextMenu.pug +0 -0
  121. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/templates/popover/annotationPopover.pug +0 -0
  122. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/templates/popover/annotationPopoverMetadata.pug +0 -0
  123. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/templates/popover/pixelmapContextMenu.pug +0 -0
  124. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/views/HierarchyWidget.js +0 -0
  125. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/views/JobDetailsWidget.js +0 -0
  126. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/views/View.js +0 -0
  127. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/views/body/ConfigView.js +0 -0
  128. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/views/body/index.js +0 -0
  129. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/views/index.js +0 -0
  130. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/views/itemList.js +0 -0
  131. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/views/itemPage.js +0 -0
  132. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/views/layout/HeaderAnalysesView.js +0 -0
  133. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/views/layout/HeaderImageView.js +0 -0
  134. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/views/layout/HeaderUserView.js +0 -0
  135. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/views/layout/HeaderView.js +0 -0
  136. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/views/layout/LoginView.js +0 -0
  137. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/views/layout/index.js +0 -0
  138. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/views/popover/AnnotationPopover.js +0 -0
  139. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/views/popover/PixelmapContextMenu.js +0 -0
  140. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/views/popover/index.js +0 -0
  141. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/views/searchResultsView.js +0 -0
  142. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/views/utils.js +0 -0
  143. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/vue/components/ColorPickerInput.vue +0 -0
  144. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/vue/components/EditHeatmapOrGridData.vue +0 -0
  145. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/vue/components/EditHeatmapOrGridDataContainer.vue +0 -0
  146. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/web_client/webpack.helper.js +0 -0
  147. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui/webroot.mako +0 -0
  148. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui.egg-info/SOURCES.txt +0 -0
  149. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui.egg-info/dependency_links.txt +0 -0
  150. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui.egg-info/entry_points.txt +0 -0
  151. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui.egg-info/not-zip-safe +0 -0
  152. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/histomicsui.egg-info/top_level.txt +0 -0
  153. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/pyproject.toml +0 -0
  154. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/requirements-dev.txt +0 -0
  155. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/ruff.toml +0 -0
  156. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/setup.cfg +0 -0
  157. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/tests/__init__.py +0 -0
  158. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/tests/datastore.py +0 -0
  159. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/tests/girder_utilities.py +0 -0
  160. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/tests/test_files/.histomicsui_config.yaml +0 -0
  161. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/tests/test_files/sample.anot +0 -0
  162. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/tests/test_files/sample.meta +0 -0
  163. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/tests/test_files/sample_girder_id.anot +0 -0
  164. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/tests/test_files/test_analysis_detection.xml +0 -0
  165. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/tests/test_files/test_analysis_features.xml +0 -0
  166. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/tests/test_handlers.py +0 -0
  167. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/tests/test_hui_rest.py +0 -0
  168. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/tests/test_image_browse_endpoints.py +0 -0
  169. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/tests/test_load.py +0 -0
  170. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/tests/test_tcga.py +0 -0
  171. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/tests/test_web_client.py +0 -0
  172. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/tests/web_client_specs/.eslintrc +0 -0
  173. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/tests/web_client_specs/analysisSpec.js +0 -0
  174. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/tests/web_client_specs/annotationSpec.js +0 -0
  175. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/tests/web_client_specs/girderUISpec.js +0 -0
  176. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/tests/web_client_specs/huiSpec.js +0 -0
  177. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/tests/web_client_specs/huiTest.js +0 -0
  178. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/tests/web_client_specs/itemSpec.js +0 -0
  179. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/tests/web_client_specs/metadataPanelSpec.js +0 -0
  180. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/tests/web_client_specs/metadataPlotSpec.js +0 -0
  181. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/tests/web_client_specs/overviewPanelSpec.js +0 -0
  182. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/tests/web_client_specs/panelLayoutSpec.js +0 -0
  183. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/tests/web_client_specs/pixelmapCategorySpec.js +0 -0
  184. {histomicsui-1.7.1.dev16 → histomicsui-1.7.2}/tox.ini +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: histomicsui
3
- Version: 1.7.1.dev16
3
+ Version: 1.7.2
4
4
  Summary: Organize, visualize, and analyze histology images.
5
5
  Home-page: https://github.com/DigitalSlideArchive/histomicsui
6
6
  Author: Kitware, Inc.
@@ -21,7 +21,7 @@ Requires-Python: >=3.8
21
21
  Description-Content-Type: text/x-rst
22
22
  License-File: LICENSE
23
23
  License-File: NOTICE
24
- Requires-Dist: girder-large-image-annotation>=1.31.0
24
+ Requires-Dist: girder-large-image-annotation>=1.32.8
25
25
  Requires-Dist: girder-slicer-cli-web[girder]>=1.4.0
26
26
  Requires-Dist: cachetools
27
27
  Requires-Dist: orjson
@@ -50,6 +50,7 @@ _________________
50
50
  fillColor: rgba(255, 0, 0, 0.25)
51
51
  lineColor: rgb(255, 0, 0)
52
52
  lineWidth: 2
53
+ hotkey: r
53
54
  -
54
55
  id: Green
55
56
  fillColor: rgba(0, 128, 0, 0.25)
@@ -61,6 +62,19 @@ _________________
61
62
  lineColor: rgb(0, 0, 255)
62
63
  lineWidth: 2
63
64
 
65
+ If a hotkey is specified for a group, it will only be active if the group was loaded from the config file. That is, moving to another folder where the config file does not apply will disable the hotkey. If you want hotkeys to have modifiers (e.g., require that alt, ctrl, or meta be pressed or explicitly NOT pressed), you can add a hotkey section:
66
+
67
+ ::
68
+
69
+ ---
70
+ hotkeys:
71
+ -
72
+ key: r
73
+ ctrl: true
74
+ alt: false
75
+ action: group
76
+ param: Red
77
+
64
78
  UI Settings
65
79
  ___________
66
80
 
@@ -467,26 +467,26 @@ var SaveAnnotation = View.extend({
467
467
 
468
468
  // all valid
469
469
  if (setFillColor || setLineColor || setLineWidth) {
470
- this.annotation.elements().each((element, idx) => { /* eslint-disable backbone/no-silent */
470
+ this.annotation.elements().each((element, idx) => {
471
471
  if (setFillColor) {
472
472
  if (setFillColor === 'func') {
473
473
  fillColor = colorFromFunc(element, idx, fillColorParam, this._styleableFuncs[fillColorParam.key]);
474
474
  }
475
- element.set('fillColor', fillColor, {silent: true});
475
+ element.set('fillColor', fillColor, {delaySave: true});
476
476
  }
477
477
  if (setLineColor) {
478
478
  if (setLineColor === 'func') {
479
479
  lineColor = colorFromFunc(element, idx, lineColorParam, this._styleableFuncs[lineColorParam.key]);
480
480
  }
481
- element.set('lineColor', lineColor, {silent: true});
481
+ element.set('lineColor', lineColor, {delaySave: true});
482
482
  }
483
483
  if (setLineWidth) {
484
- element.set('lineWidth', lineWidth, {silent: true});
484
+ element.set('lineWidth', lineWidth, {delaySave: true});
485
485
  }
486
486
  });
487
487
  const annotationData = _.extend({}, this.annotation.get('annotation'));
488
488
  annotationData.elements = this.annotation.elements().toJSON();
489
- this.annotation.set('annotation', annotationData, {silent: true});
489
+ this.annotation.set('annotation', annotationData, {delaySave: true});
490
490
  }
491
491
 
492
492
  const visible = this.$('#h-annotation-visible').prop('checked');
@@ -15,11 +15,6 @@ import showSaveAnnotationDialog from '../dialogs/saveAnnotation';
15
15
  import annotationSelectorWidget from '../templates/panels/annotationSelector.pug';
16
16
  import '../stylesheets/panels/annotationSelector.styl';
17
17
 
18
- // Too many elements in the draw panel will crash the browser,
19
- // so we only allow editing of annotations with less than this
20
- // many elements.
21
- const MAX_ELEMENTS_LIST_LENGTH = 5000;
22
-
23
18
  /**
24
19
  * Create a panel controlling the visibility of annotations
25
20
  * on the image view.
@@ -401,24 +396,12 @@ var AnnotationSelector = Panel.extend({
401
396
  },
402
397
 
403
398
  _setActiveAnnotationWithoutLoad(model) {
404
- const numElements = ((model.get('annotation') || {}).elements || []).length;
405
399
  if (this._activeAnnotation && this._activeAnnotation.id !== model.id) {
406
400
  return;
407
401
  }
408
402
  model.set('displayed', true);
409
403
 
410
- if (numElements > MAX_ELEMENTS_LIST_LENGTH || model._pageElements) {
411
- events.trigger('g:alert', {
412
- text: 'This annotation has too many elements to be edited.',
413
- type: 'warning',
414
- timeout: 5000,
415
- icon: 'info'
416
- });
417
- this._activeAnnotation = null;
418
- this.trigger('h:editAnnotation', null);
419
- } else {
420
- this.trigger('h:editAnnotation', model);
421
- }
404
+ this.trigger('h:editAnnotation', model);
422
405
  },
423
406
 
424
407
  createAnnotation(evt) {
@@ -441,7 +424,10 @@ var AnnotationSelector = Panel.extend({
441
424
  );
442
425
  },
443
426
 
444
- _saveAnnotation(annotation) {
427
+ _saveAnnotation(annotation, options) {
428
+ if (options && options.delaySave) {
429
+ return;
430
+ }
445
431
  if (this.viewer && !this.viewer._saving) {
446
432
  this.viewer._saving = {};
447
433
  }
@@ -118,7 +118,8 @@ var DrawWidget = Panel.extend({
118
118
  drawingType: this._drawingType,
119
119
  collapsed: this.$('.s-panel-content.collapse').length && !this.$('.s-panel-content').hasClass('in'),
120
120
  firstRender: true,
121
- displayIdStart: 0
121
+ displayIdStart: 0,
122
+ partialCount: this.annotation && this.annotation._pageElements
122
123
  }));
123
124
  this.$('.h-dropdown-content').collapse({toggle: false});
124
125
  }
@@ -435,7 +436,7 @@ var DrawWidget = Panel.extend({
435
436
  }
436
437
  return result;
437
438
  }).filter((annot) => !annot.points || annot.points.length);
438
- Object.keys(oldids).forEach((id) => this.deleteElement(undefined, id, {silent: elements.length}));
439
+ Object.keys(oldids).forEach((id) => this.deleteElement(undefined, id, {delaySave: elements.length}));
439
440
  this.addElements(
440
441
  _.map(elements, (el) => {
441
442
  el = _.extend(el, _.omit(this._style.toJSON(), 'id'));
@@ -997,20 +998,35 @@ var DrawWidget = Panel.extend({
997
998
  this._setStyleGroup(this._groups.get(prevGroup).toJSON());
998
999
  },
999
1000
 
1001
+ setStyleGroupById(groupId) {
1002
+ const group = this._groups.get(groupId);
1003
+ if (!group) {
1004
+ return;
1005
+ }
1006
+ this._setStyleGroup(group.toJSON());
1007
+ },
1008
+
1000
1009
  getStyleGroup() {
1001
1010
  return this._style;
1002
1011
  },
1003
1012
 
1013
+ _debounceRender() {
1014
+ if (this._debounceTimer) {
1015
+ window.clearTimeout(this._debounceTimer);
1016
+ }
1017
+ this._debounceTimer = window.setTimeout(() => this.render(), 1);
1018
+ },
1019
+
1004
1020
  _styleGroupEditor() {
1005
1021
  var dlg = editStyleGroups(this._style, this._groups, this.parentView._defaultGroup);
1006
1022
  dlg.$el.on('hidden.bs.modal', () => {
1007
- this.render();
1023
+ this._debounceRender();
1008
1024
  this.parentView.trigger('h:styleGroupsEdited', this._groups);
1009
1025
  });
1010
1026
  },
1011
1027
 
1012
1028
  _handleStyleGroupsUpdate() {
1013
- this.render();
1029
+ this._debounceRender();
1014
1030
  this.trigger('h:styleGroupsUpdated', this._groups);
1015
1031
  },
1016
1032
 
@@ -104,7 +104,10 @@ block content
104
104
  input.h-brush-screen(type="checkbox", checked=opts.brush_screen ? 'checked' : undefined)
105
105
  | Screen
106
106
  .h-group-count
107
- b.h-group-count-label Count:
107
+ if partialCount
108
+ b.h-group-count-label(title='* These counts only apply to loaded elements') Count*:
109
+ else
110
+ b.h-group-count-label Count:
108
111
  span.h-group-count-options
109
112
  .h-elements-container
110
113
  include drawWidgetElement.pug
@@ -1168,6 +1168,38 @@ var ImageView = View.extend({
1168
1168
  l: 'line',
1169
1169
  b: 'brush'
1170
1170
  };
1171
+ if (this._hotkeys && this._hotkeys[evt.key.toLowerCase()]) {
1172
+ let used = false;
1173
+ this._hotkeys[evt.key.toLowerCase()].forEach((keyset) => {
1174
+ if (keyset.ctrl !== undefined && evt.originalEvent.ctrlKey !== keyset.ctrl) {
1175
+ return;
1176
+ }
1177
+ if (keyset.alt !== undefined && evt.originalEvent.altKey !== keyset.alt) {
1178
+ return;
1179
+ }
1180
+ if (keyset.meta !== undefined && evt.originalEvent.metaKey !== keyset.meta) {
1181
+ return;
1182
+ }
1183
+ if (keyset.shift !== undefined && evt.originalEvent.shiftKey !== keyset.shift) {
1184
+ return;
1185
+ }
1186
+ if (keyset.shift === undefined && evt.originalEvent.shiftKey && evt.key.toLowerCase() === keyset.key) {
1187
+ return;
1188
+ }
1189
+ switch (keyset.action) {
1190
+ case 'group':
1191
+ if (this.drawWidget) {
1192
+ this.drawWidget.setStyleGroupById(keyset.param);
1193
+ used = true;
1194
+ }
1195
+ break;
1196
+ }
1197
+ });
1198
+ if (used) {
1199
+ evt.preventDefault();
1200
+ return;
1201
+ }
1202
+ }
1171
1203
  switch (evt.key) {
1172
1204
  case 'a':
1173
1205
  this._showOrHideAnnotations();
@@ -1254,6 +1286,11 @@ var ImageView = View.extend({
1254
1286
  }
1255
1287
  }
1256
1288
  break;
1289
+ case 'D':
1290
+ if (evt.shiftKey && (evt.altKey || evt.metaKey)) {
1291
+ console.log(this);
1292
+ }
1293
+ break;
1257
1294
  default:
1258
1295
  if (this.drawWidget && drawModes[evt.key] && this.activeAnnotation) {
1259
1296
  const mode = drawModes[evt.key];
@@ -1343,6 +1380,9 @@ var ImageView = View.extend({
1343
1380
  getElementsInPolygon(poly) {
1344
1381
  const results = [];
1345
1382
  this.viewerWidget.featureLayer.features().forEach((feature) => {
1383
+ if (feature._centroidFeature) {
1384
+ return;
1385
+ }
1346
1386
  const r = feature.polygonSearch(poly, {partial: false});
1347
1387
  r.found.forEach((feature) => {
1348
1388
  const annotationId = feature.properties ? feature.properties.annotation : null;
@@ -1560,12 +1600,11 @@ var ImageView = View.extend({
1560
1600
  const groupedAnnotations = this.selectedElements.groupBy((element) => element.originalAnnotation.id);
1561
1601
  _.each(groupedAnnotations, (elements, annotationId) => {
1562
1602
  const annotation = this.annotations.get(annotationId);
1563
- _.each(elements, (element) => { /* eslint-disable backbone/no-silent */
1603
+ _.each(elements, (element) => {
1564
1604
  const annotationElement = annotation.elements().get(element.id);
1565
- // silence the event because we want to make one save call for each annotation.
1566
- annotationElement.set(element.toJSON(), {silent: true});
1605
+ annotationElement.set(element.toJSON(), {delaySave: true});
1567
1606
  if (!element.get('group')) {
1568
- annotationElement.unset('group', {silent: true});
1607
+ annotationElement.unset('group', {delaySave: true});
1569
1608
  }
1570
1609
  });
1571
1610
  if (!elements.length) {
@@ -1581,7 +1620,7 @@ var ImageView = View.extend({
1581
1620
  _.each(groupedAnnotations, (elements, annotationId) => { /* eslint-disable backbone/no-silent */
1582
1621
  // silence the event because we want to make one save call for each annotation.
1583
1622
  const elementsCollection = this.annotations.get(annotationId).elements();
1584
- elementsCollection.remove(elements, {silent: true});
1623
+ elementsCollection.remove(elements, {delaySave: true});
1585
1624
  elementsCollection.trigger('reset', elementsCollection);
1586
1625
  });
1587
1626
  },
@@ -1663,10 +1702,33 @@ var ImageView = View.extend({
1663
1702
  return null;
1664
1703
  });
1665
1704
  },
1705
+ _addHotKey(keyset) {
1706
+ if (keyset.key === undefined || keyset.action === undefined || !keyset.key.length) {
1707
+ return;
1708
+ }
1709
+ keyset = Object.assign({}, keyset);
1710
+ let key = keyset.key;
1711
+ const parts = key.replace(/([+-])(?!$)/g, '\n').split('\n');
1712
+ const modifiers = ['ctrl', 'alt', 'meta', 'shift'];
1713
+ for (let i = 0; i < parts.length - 1; i++) {
1714
+ const mod = parts[i].toLowerCase();
1715
+ if (modifiers.includes(mod)) {
1716
+ keyset[mod] = true;
1717
+ }
1718
+ }
1719
+ key = parts[parts.length - 1];
1720
+ keyset.key = key;
1721
+ key = key.toLowerCase();
1722
+ if (!this._hotkeys[key]) {
1723
+ this._hotkeys[key] = [];
1724
+ }
1725
+ this._hotkeys[key].push(keyset);
1726
+ },
1666
1727
  _getConfig(modelId) {
1667
1728
  if (modelId !== this._folderConfigId) {
1668
1729
  this._folderConfigId = modelId;
1669
1730
  this._folderConfig = {};
1731
+ this._hotkeys = {};
1670
1732
  }
1671
1733
  restRequest({
1672
1734
  url: `folder/${this.model.get('folderId')}/yaml_config/.histomicsui_config.yaml`
@@ -1676,7 +1738,18 @@ var ImageView = View.extend({
1676
1738
  return;
1677
1739
  }
1678
1740
  this._folderConfig = val;
1741
+ this._hotkeys = {};
1742
+ if (val.hotkeys) {
1743
+ (val.hotkeys || []).forEach((keyset) => {
1744
+ this._addHotKey(keyset);
1745
+ });
1746
+ }
1679
1747
  if (val.annotationGroups) {
1748
+ (val.annotationGroups.groups || []).forEach((group) => {
1749
+ if (group.hotkey) {
1750
+ this._addHotKey({key: group.hotkey, action: 'group', param: group.id});
1751
+ }
1752
+ });
1680
1753
  const groups = new StyleCollection();
1681
1754
  groups.fetch().done(() => {
1682
1755
  if (!val || this.model.id !== modelId) {
@@ -68,7 +68,7 @@ const AnnotationContextMenu = View.extend({
68
68
  }
69
69
  });
70
70
  let refresh = false;
71
- this.collection.each((element) => { /* eslint-disable backbone/no-silent */
71
+ this.collection.each((element) => {
72
72
  if (this.parentView.drawWidget && this.parentView.activeAnnotation.id === element.originalAnnotation.id &&
73
73
  element.attributes.group !== group && ['point', 'polyline', 'rectangle', 'ellipse', 'circle'].includes(element.attributes.type)) {
74
74
  this.parentView.drawWidget.updateCount(element.attributes.group || this.parentView._defaultGroup, -1);
@@ -78,9 +78,9 @@ const AnnotationContextMenu = View.extend({
78
78
  if (group) {
79
79
  styleAttrs.group = group;
80
80
  } else {
81
- element.unset('group', {silent: true});
81
+ element.unset('group', {delaySave: true});
82
82
  }
83
- element.set(styleAttrs, {silent: true});
83
+ element.set(styleAttrs, {delaySave: true});
84
84
  });
85
85
  this.collection.trigger('h:save');
86
86
  this.trigger('h:close');
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: histomicsui
3
- Version: 1.7.1.dev16
3
+ Version: 1.7.2
4
4
  Summary: Organize, visualize, and analyze histology images.
5
5
  Home-page: https://github.com/DigitalSlideArchive/histomicsui
6
6
  Author: Kitware, Inc.
@@ -21,7 +21,7 @@ Requires-Python: >=3.8
21
21
  Description-Content-Type: text/x-rst
22
22
  License-File: LICENSE
23
23
  License-File: NOTICE
24
- Requires-Dist: girder-large-image-annotation>=1.31.0
24
+ Requires-Dist: girder-large-image-annotation>=1.32.8
25
25
  Requires-Dist: girder-slicer-cli-web[girder]>=1.4.0
26
26
  Requires-Dist: cachetools
27
27
  Requires-Dist: orjson
@@ -1,4 +1,4 @@
1
- girder-large-image-annotation>=1.31.0
1
+ girder-large-image-annotation>=1.32.8
2
2
  girder-slicer-cli-web[girder]>=1.4.0
3
3
  cachetools
4
4
  orjson
@@ -43,7 +43,7 @@ setup(
43
43
  'Programming Language :: Python :: 3.13',
44
44
  ],
45
45
  install_requires=[
46
- 'girder-large-image-annotation>=1.31.0',
46
+ 'girder-large-image-annotation>=1.32.8',
47
47
  'girder-slicer-cli-web[girder]>=1.4.0',
48
48
  'cachetools',
49
49
  'orjson',
File without changes
File without changes
File without changes
File without changes
File without changes