phasor-handler 2.3.0__tar.gz → 3.0.0__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 (48) hide show
  1. {phasor_handler-2.3.0/phasor_handler.egg-info → phasor_handler-3.0.0}/PKG-INFO +1 -1
  2. {phasor_handler-2.3.0 → phasor_handler-3.0.0}/phasor_handler/widgets/analysis/components/circle_roi.py +15 -4
  3. {phasor_handler-2.3.0 → phasor_handler-3.0.0}/phasor_handler/widgets/analysis/components/roi_list.py +2 -0
  4. {phasor_handler-2.3.0 → phasor_handler-3.0.0/phasor_handler.egg-info}/PKG-INFO +1 -1
  5. {phasor_handler-2.3.0 → phasor_handler-3.0.0}/pyproject.toml +1 -1
  6. {phasor_handler-2.3.0 → phasor_handler-3.0.0}/CONTRIBUTING.md +0 -0
  7. {phasor_handler-2.3.0 → phasor_handler-3.0.0}/LICENSE.md +0 -0
  8. {phasor_handler-2.3.0 → phasor_handler-3.0.0}/MANIFEST.in +0 -0
  9. {phasor_handler-2.3.0 → phasor_handler-3.0.0}/README.md +0 -0
  10. {phasor_handler-2.3.0 → phasor_handler-3.0.0}/environment.yml +0 -0
  11. {phasor_handler-2.3.0 → phasor_handler-3.0.0}/phasor_handler/__init__.py +0 -0
  12. {phasor_handler-2.3.0 → phasor_handler-3.0.0}/phasor_handler/app.py +0 -0
  13. {phasor_handler-2.3.0 → phasor_handler-3.0.0}/phasor_handler/img/icons/chevron-down.svg +0 -0
  14. {phasor_handler-2.3.0 → phasor_handler-3.0.0}/phasor_handler/img/icons/chevron-up.svg +0 -0
  15. {phasor_handler-2.3.0 → phasor_handler-3.0.0}/phasor_handler/img/logo.ico +0 -0
  16. {phasor_handler-2.3.0 → phasor_handler-3.0.0}/phasor_handler/models/dir_manager.py +0 -0
  17. {phasor_handler-2.3.0 → phasor_handler-3.0.0}/phasor_handler/scripts/contrast.py +0 -0
  18. {phasor_handler-2.3.0 → phasor_handler-3.0.0}/phasor_handler/scripts/convert.py +0 -0
  19. {phasor_handler-2.3.0 → phasor_handler-3.0.0}/phasor_handler/scripts/meta_reader.py +0 -0
  20. {phasor_handler-2.3.0 → phasor_handler-3.0.0}/phasor_handler/scripts/plot.py +0 -0
  21. {phasor_handler-2.3.0 → phasor_handler-3.0.0}/phasor_handler/scripts/register.py +0 -0
  22. {phasor_handler-2.3.0 → phasor_handler-3.0.0}/phasor_handler/themes/__init__.py +0 -0
  23. {phasor_handler-2.3.0 → phasor_handler-3.0.0}/phasor_handler/themes/dark_theme.py +0 -0
  24. {phasor_handler-2.3.0 → phasor_handler-3.0.0}/phasor_handler/tools/__init__.py +0 -0
  25. {phasor_handler-2.3.0 → phasor_handler-3.0.0}/phasor_handler/tools/check_stylesheet.py +0 -0
  26. {phasor_handler-2.3.0 → phasor_handler-3.0.0}/phasor_handler/tools/misc.py +0 -0
  27. {phasor_handler-2.3.0 → phasor_handler-3.0.0}/phasor_handler/widgets/__init__.py +0 -0
  28. {phasor_handler-2.3.0 → phasor_handler-3.0.0}/phasor_handler/widgets/analysis/components/__init__.py +0 -0
  29. {phasor_handler-2.3.0 → phasor_handler-3.0.0}/phasor_handler/widgets/analysis/components/bnc.py +0 -0
  30. {phasor_handler-2.3.0 → phasor_handler-3.0.0}/phasor_handler/widgets/analysis/components/image_view.py +0 -0
  31. {phasor_handler-2.3.0 → phasor_handler-3.0.0}/phasor_handler/widgets/analysis/components/meta_info.py +0 -0
  32. {phasor_handler-2.3.0 → phasor_handler-3.0.0}/phasor_handler/widgets/analysis/components/trace_plot.py +0 -0
  33. {phasor_handler-2.3.0 → phasor_handler-3.0.0}/phasor_handler/widgets/analysis/view.py +0 -0
  34. {phasor_handler-2.3.0 → phasor_handler-3.0.0}/phasor_handler/widgets/conversion/view.py +0 -0
  35. {phasor_handler-2.3.0 → phasor_handler-3.0.0}/phasor_handler/widgets/registration/view.py +0 -0
  36. {phasor_handler-2.3.0 → phasor_handler-3.0.0}/phasor_handler/widgets/secondlevel/view.py +0 -0
  37. {phasor_handler-2.3.0 → phasor_handler-3.0.0}/phasor_handler/workers/__init__.py +0 -0
  38. {phasor_handler-2.3.0 → phasor_handler-3.0.0}/phasor_handler/workers/analysis_worker.py +0 -0
  39. {phasor_handler-2.3.0 → phasor_handler-3.0.0}/phasor_handler/workers/conversion_worker.py +0 -0
  40. {phasor_handler-2.3.0 → phasor_handler-3.0.0}/phasor_handler/workers/histogram_worker.py +0 -0
  41. {phasor_handler-2.3.0 → phasor_handler-3.0.0}/phasor_handler/workers/registration_worker.py +0 -0
  42. {phasor_handler-2.3.0 → phasor_handler-3.0.0}/phasor_handler/workers/secondlevel_worker.py +0 -0
  43. {phasor_handler-2.3.0 → phasor_handler-3.0.0}/phasor_handler.egg-info/SOURCES.txt +0 -0
  44. {phasor_handler-2.3.0 → phasor_handler-3.0.0}/phasor_handler.egg-info/dependency_links.txt +0 -0
  45. {phasor_handler-2.3.0 → phasor_handler-3.0.0}/phasor_handler.egg-info/entry_points.txt +0 -0
  46. {phasor_handler-2.3.0 → phasor_handler-3.0.0}/phasor_handler.egg-info/requires.txt +0 -0
  47. {phasor_handler-2.3.0 → phasor_handler-3.0.0}/phasor_handler.egg-info/top_level.txt +0 -0
  48. {phasor_handler-2.3.0 → phasor_handler-3.0.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: phasor-handler
3
- Version: 2.3.0
3
+ Version: 3.0.0
4
4
  Summary: A PyQt6 GUI toolbox for processing two-photon phasor imaging data
5
5
  Author-email: Josia Shemuel <joshemuel@users.noreply.github.com>
6
6
  License: MIT License
@@ -176,8 +176,9 @@ class CircleRoiTool(QObject):
176
176
  img_x1 = img_x0 + (ow * scale_x)
177
177
  img_y1 = img_y0 + (oh * scale_y)
178
178
 
179
- # Update the ROI's xyxy coordinates
180
- roi['xyxy'] = (img_x0, img_y0, img_x1, img_y1)
179
+ # Update the ROI's xyxy coordinates (convert to int for array slicing)
180
+ roi['xyxy'] = (int(round(img_x0)), int(round(img_y0)),
181
+ int(round(img_x1)), int(round(img_y1)))
181
182
 
182
183
  # If this ROI has freehand points, translate them too
183
184
  if origin.get('freehand_points'):
@@ -222,8 +223,9 @@ class CircleRoiTool(QObject):
222
223
  img_x1 = img_x0 + (ow * scale_x)
223
224
  img_y1 = img_y0 + (oh * scale_y)
224
225
 
225
- # Restore original xyxy
226
- roi['xyxy'] = (img_x0, img_y0, img_x1, img_y1)
226
+ # Restore original xyxy (convert to int for array slicing)
227
+ roi['xyxy'] = (int(round(img_x0)), int(round(img_y0)),
228
+ int(round(img_x1)), int(round(img_y1)))
227
229
 
228
230
  # Restore original freehand points if they existed
229
231
  if origin.get('freehand_points'):
@@ -468,6 +470,15 @@ class CircleRoiTool(QObject):
468
470
  }
469
471
  return True
470
472
 
473
+ # If multiple ROIs are selected but we clicked on a DIFFERENT ROI
474
+ # (not in selection) without Shift, exit multi-select and select only that ROI
475
+ if len(self._selected_roi_indices) > 1 and clicked_roi_index is not None and clicked_roi_index not in self._selected_roi_indices:
476
+ print(f"DEBUG: RightClick on ROI {clicked_roi_index} (not in selection) - exiting multi-select")
477
+ # Clear multi-selection and select only the clicked ROI
478
+ self._selected_roi_indices = [clicked_roi_index]
479
+ self.roiSelected.emit(clicked_roi_index)
480
+ return True
481
+
471
482
  # Single selection mode - original behavior
472
483
  # First, check if we're clicking on any saved ROI
473
484
  roi_index = self._find_roi_at_point(p)
@@ -1012,6 +1012,8 @@ class RoiListWidget(QWidget):
1012
1012
  try:
1013
1013
  # Select the corresponding item in the ROI list widget
1014
1014
  if 0 <= roi_index < self.roi_list_widget.count():
1015
+ # Clear any existing multi-selection first to ensure single selection
1016
+ self.roi_list_widget.clearSelection()
1015
1017
  self.roi_list_widget.setCurrentRow(roi_index)
1016
1018
  print(f"Auto-selected ROI {roi_index + 1} by right-click")
1017
1019
  except Exception as e:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: phasor-handler
3
- Version: 2.3.0
3
+ Version: 3.0.0
4
4
  Summary: A PyQt6 GUI toolbox for processing two-photon phasor imaging data
5
5
  Author-email: Josia Shemuel <joshemuel@users.noreply.github.com>
6
6
  License: MIT License
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "phasor-handler"
7
- version = "2.3.0"
7
+ version = "3.0.0"
8
8
  authors = [{ name = "Josia Shemuel", email = "joshemuel@users.noreply.github.com" }]
9
9
  description = "A PyQt6 GUI toolbox for processing two-photon phasor imaging data"
10
10
  readme = "README.md"
File without changes
File without changes