setiastrosuitepro 1.6.4__py3-none-any.whl → 1.6.10__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. setiastro/images/abeicon.svg +16 -0
  2. setiastro/images/acv_icon.png +0 -0
  3. setiastro/images/cosmic.svg +40 -0
  4. setiastro/images/cosmicsat.svg +24 -0
  5. setiastro/images/first_quarter.png +0 -0
  6. setiastro/images/full_moon.png +0 -0
  7. setiastro/images/graxpert.svg +19 -0
  8. setiastro/images/last_quarter.png +0 -0
  9. setiastro/images/linearfit.svg +32 -0
  10. setiastro/images/new_moon.png +0 -0
  11. setiastro/images/pixelmath.svg +42 -0
  12. setiastro/images/waning_crescent_1.png +0 -0
  13. setiastro/images/waning_crescent_2.png +0 -0
  14. setiastro/images/waning_crescent_3.png +0 -0
  15. setiastro/images/waning_crescent_4.png +0 -0
  16. setiastro/images/waning_crescent_5.png +0 -0
  17. setiastro/images/waning_gibbous_1.png +0 -0
  18. setiastro/images/waning_gibbous_2.png +0 -0
  19. setiastro/images/waning_gibbous_3.png +0 -0
  20. setiastro/images/waning_gibbous_4.png +0 -0
  21. setiastro/images/waning_gibbous_5.png +0 -0
  22. setiastro/images/waxing_crescent_1.png +0 -0
  23. setiastro/images/waxing_crescent_2.png +0 -0
  24. setiastro/images/waxing_crescent_3.png +0 -0
  25. setiastro/images/waxing_crescent_4.png +0 -0
  26. setiastro/images/waxing_crescent_5.png +0 -0
  27. setiastro/images/waxing_gibbous_1.png +0 -0
  28. setiastro/images/waxing_gibbous_2.png +0 -0
  29. setiastro/images/waxing_gibbous_3.png +0 -0
  30. setiastro/images/waxing_gibbous_4.png +0 -0
  31. setiastro/images/waxing_gibbous_5.png +0 -0
  32. setiastro/qml/ResourceMonitor.qml +84 -82
  33. setiastro/saspro/__main__.py +19 -0
  34. setiastro/saspro/_generated/build_info.py +2 -2
  35. setiastro/saspro/abe.py +37 -4
  36. setiastro/saspro/aberration_ai.py +237 -21
  37. setiastro/saspro/acv_exporter.py +379 -0
  38. setiastro/saspro/add_stars.py +33 -6
  39. setiastro/saspro/backgroundneutral.py +35 -7
  40. setiastro/saspro/blemish_blaster.py +4 -1
  41. setiastro/saspro/blink_comparator_pro.py +74 -24
  42. setiastro/saspro/clahe.py +4 -1
  43. setiastro/saspro/continuum_subtract.py +4 -1
  44. setiastro/saspro/convo.py +4 -1
  45. setiastro/saspro/cosmicclarity.py +129 -18
  46. setiastro/saspro/crop_dialog_pro.py +123 -7
  47. setiastro/saspro/curve_editor_pro.py +109 -42
  48. setiastro/saspro/doc_manager.py +67 -4
  49. setiastro/saspro/exoplanet_detector.py +120 -28
  50. setiastro/saspro/frequency_separation.py +1158 -204
  51. setiastro/saspro/ghs_dialog_pro.py +81 -16
  52. setiastro/saspro/graxpert.py +1 -0
  53. setiastro/saspro/gui/main_window.py +393 -204
  54. setiastro/saspro/gui/mixins/menu_mixin.py +1 -0
  55. setiastro/saspro/gui/mixins/theme_mixin.py +160 -14
  56. setiastro/saspro/gui/mixins/toolbar_mixin.py +356 -12
  57. setiastro/saspro/gui/mixins/update_mixin.py +138 -36
  58. setiastro/saspro/gui/mixins/view_mixin.py +42 -0
  59. setiastro/saspro/halobgon.py +4 -0
  60. setiastro/saspro/histogram.py +5 -1
  61. setiastro/saspro/image_combine.py +4 -0
  62. setiastro/saspro/image_peeker_pro.py +4 -0
  63. setiastro/saspro/imageops/stretch.py +531 -62
  64. setiastro/saspro/isophote.py +4 -0
  65. setiastro/saspro/layers.py +13 -9
  66. setiastro/saspro/layers_dock.py +183 -3
  67. setiastro/saspro/legacy/image_manager.py +154 -20
  68. setiastro/saspro/legacy/numba_utils.py +43 -0
  69. setiastro/saspro/legacy/xisf.py +240 -98
  70. setiastro/saspro/live_stacking.py +180 -79
  71. setiastro/saspro/luminancerecombine.py +228 -27
  72. setiastro/saspro/mask_creation.py +174 -15
  73. setiastro/saspro/mfdeconv.py +113 -35
  74. setiastro/saspro/mfdeconvcudnn.py +119 -70
  75. setiastro/saspro/mfdeconvsport.py +112 -35
  76. setiastro/saspro/morphology.py +4 -0
  77. setiastro/saspro/multiscale_decomp.py +51 -12
  78. setiastro/saspro/numba_utils.py +72 -2
  79. setiastro/saspro/ops/commands.py +18 -18
  80. setiastro/saspro/ops/script_editor.py +5 -2
  81. setiastro/saspro/ops/scripts.py +3 -0
  82. setiastro/saspro/perfect_palette_picker.py +37 -3
  83. setiastro/saspro/plate_solver.py +84 -49
  84. setiastro/saspro/psf_viewer.py +119 -37
  85. setiastro/saspro/resources.py +67 -0
  86. setiastro/saspro/rgbalign.py +4 -0
  87. setiastro/saspro/selective_color.py +4 -1
  88. setiastro/saspro/sfcc.py +60 -2
  89. setiastro/saspro/shortcuts.py +142 -23
  90. setiastro/saspro/signature_insert.py +692 -33
  91. setiastro/saspro/stacking_suite.py +1017 -400
  92. setiastro/saspro/star_alignment.py +4 -1
  93. setiastro/saspro/star_spikes.py +4 -0
  94. setiastro/saspro/star_stretch.py +38 -3
  95. setiastro/saspro/stat_stretch.py +702 -128
  96. setiastro/saspro/subwindow.py +786 -360
  97. setiastro/saspro/supernovaasteroidhunter.py +1 -1
  98. setiastro/saspro/wavescale_hdr.py +4 -1
  99. setiastro/saspro/wavescalede.py +4 -1
  100. setiastro/saspro/whitebalance.py +60 -12
  101. setiastro/saspro/widgets/common_utilities.py +28 -21
  102. setiastro/saspro/widgets/resource_monitor.py +109 -59
  103. setiastro/saspro/widgets/spinboxes.py +10 -13
  104. setiastro/saspro/wimi.py +27 -656
  105. setiastro/saspro/wims.py +13 -3
  106. setiastro/saspro/xisf.py +101 -11
  107. {setiastrosuitepro-1.6.4.dist-info → setiastrosuitepro-1.6.10.dist-info}/METADATA +2 -1
  108. {setiastrosuitepro-1.6.4.dist-info → setiastrosuitepro-1.6.10.dist-info}/RECORD +112 -80
  109. {setiastrosuitepro-1.6.4.dist-info → setiastrosuitepro-1.6.10.dist-info}/WHEEL +0 -0
  110. {setiastrosuitepro-1.6.4.dist-info → setiastrosuitepro-1.6.10.dist-info}/entry_points.txt +0 -0
  111. {setiastrosuitepro-1.6.4.dist-info → setiastrosuitepro-1.6.10.dist-info}/licenses/LICENSE +0 -0
  112. {setiastrosuitepro-1.6.4.dist-info → setiastrosuitepro-1.6.10.dist-info}/licenses/license.txt +0 -0
@@ -631,7 +631,10 @@ class StellarAlignmentDialog(QDialog):
631
631
  self.setWindowFlag(Qt.WindowType.Window, True)
632
632
  self.setWindowModality(Qt.WindowModality.NonModal)
633
633
  self.setModal(False)
634
- #self.setAttribute(Qt.WidgetAttribute.WA_DeleteOnClose, True)
634
+ try:
635
+ self.setAttribute(Qt.WidgetAttribute.WA_DeleteOnClose, True)
636
+ except Exception:
637
+ pass # older PyQt6 versions
635
638
 
636
639
  self.settings = settings
637
640
  self.parent_window = parent
@@ -53,6 +53,10 @@ class StarSpikesDialogPro(QDialog):
53
53
  self.setWindowFlag(Qt.WindowType.Window, True)
54
54
  self.setWindowModality(Qt.WindowModality.NonModal)
55
55
  self.setModal(False)
56
+ try:
57
+ self.setAttribute(Qt.WidgetAttribute.WA_DeleteOnClose, True)
58
+ except Exception:
59
+ pass # older PyQt6 versions
56
60
  self.docman = doc_manager
57
61
  self.doc = initial_doc or (self.docman.get_active_document() if self.docman else None)
58
62
  self.jwstpupil_path = jwstpupil_path
@@ -133,10 +133,19 @@ class StarStretchDialog(QDialog):
133
133
  self._main = parent
134
134
  self.doc = document
135
135
  self._preview: np.ndarray | None = None
136
-
136
+ try:
137
+ self.setAttribute(Qt.WidgetAttribute.WA_DeleteOnClose, True)
138
+ except Exception:
139
+ pass # older PyQt6 versions
137
140
  # Connect to active document change signal
141
+ self._connected_current_doc_changed = False
138
142
  if hasattr(self._main, "currentDocumentChanged"):
139
- self._main.currentDocumentChanged.connect(self._on_active_doc_changed)
143
+ try:
144
+ self._main.currentDocumentChanged.connect(self._on_active_doc_changed)
145
+ self._connected_current_doc_changed = True
146
+ except Exception:
147
+ self._connected_current_doc_changed = False
148
+
140
149
  self._pix: QPixmap | None = None
141
150
  self._zoom = 0.25
142
151
  self._panning = False
@@ -345,7 +354,8 @@ class StarStretchDialog(QDialog):
345
354
 
346
355
  # Dialog stays open so user can apply to other images
347
356
  # Refresh document reference for next operation
348
- self._refresh_document_from_active()
357
+ self.close()
358
+ return
349
359
 
350
360
  def _refresh_document_from_active(self):
351
361
  """
@@ -493,6 +503,31 @@ class StarStretchDialog(QDialog):
493
503
 
494
504
  return (m * out + (1.0 - m) * src).astype(np.float32, copy=False)
495
505
 
506
+ def closeEvent(self, ev):
507
+ # 1) Disconnect active-doc tracking (Fabio hook)
508
+ try:
509
+ if self._connected_current_doc_changed and hasattr(self._main, "currentDocumentChanged"):
510
+ self._main.currentDocumentChanged.disconnect(self._on_active_doc_changed)
511
+ except Exception:
512
+ pass
513
+ self._connected_current_doc_changed = False
514
+
515
+ # 2) Stop any background preview worker/thread if you have one
516
+ # (names may differ in your file; keep what matches your implementation)
517
+ try:
518
+ if getattr(self, "_worker", None) is not None:
519
+ try:
520
+ self._worker.requestInterruption()
521
+ except Exception:
522
+ pass
523
+ if getattr(self, "_thread", None) is not None:
524
+ self._thread.quit()
525
+ self._thread.wait(500)
526
+ except Exception:
527
+ pass
528
+
529
+ super().closeEvent(ev)
530
+
496
531
 
497
532
  def _guess_spinner_path() -> str | None:
498
533
  here = os.path.dirname(__file__)