setiastrosuitepro 1.7.3__py3-none-any.whl → 1.7.5__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.
Potentially problematic release.
This version of setiastrosuitepro might be problematic. Click here for more details.
- setiastro/images/clonestamp.png +0 -0
- setiastro/saspro/__init__.py +15 -4
- setiastro/saspro/__main__.py +23 -5
- setiastro/saspro/_generated/build_info.py +2 -2
- setiastro/saspro/abe.py +4 -4
- setiastro/saspro/autostretch.py +29 -18
- setiastro/saspro/blemish_blaster.py +54 -14
- setiastro/saspro/clone_stamp.py +753 -0
- setiastro/saspro/gui/main_window.py +27 -6
- setiastro/saspro/gui/mixins/menu_mixin.py +1 -0
- setiastro/saspro/gui/mixins/toolbar_mixin.py +10 -15
- setiastro/saspro/legacy/numba_utils.py +301 -119
- setiastro/saspro/numba_utils.py +998 -270
- setiastro/saspro/ops/settings.py +6 -6
- setiastro/saspro/pixelmath.py +1 -1
- setiastro/saspro/planetprojection.py +310 -105
- setiastro/saspro/resources.py +2 -0
- setiastro/saspro/sfcc.py +14 -8
- setiastro/saspro/stacking_suite.py +413 -174
- setiastro/saspro/subwindow.py +28 -35
- setiastro/saspro/translations/all_source_strings.json +2 -2
- setiastro/saspro/translations/ar_translations.py +3 -3
- setiastro/saspro/translations/de_translations.py +2 -2
- setiastro/saspro/translations/es_translations.py +2 -2
- setiastro/saspro/translations/fr_translations.py +2 -2
- setiastro/saspro/translations/hi_translations.py +2 -2
- setiastro/saspro/translations/it_translations.py +2 -2
- setiastro/saspro/translations/ja_translations.py +2 -2
- setiastro/saspro/translations/pt_translations.py +2 -2
- setiastro/saspro/translations/ru_translations.py +2 -2
- setiastro/saspro/translations/saspro_ar.ts +2 -2
- setiastro/saspro/translations/saspro_de.ts +4 -4
- setiastro/saspro/translations/saspro_es.ts +2 -2
- setiastro/saspro/translations/saspro_fr.ts +2 -2
- setiastro/saspro/translations/saspro_hi.ts +2 -2
- setiastro/saspro/translations/saspro_it.ts +4 -4
- setiastro/saspro/translations/saspro_ja.ts +2 -2
- setiastro/saspro/translations/saspro_pt.ts +2 -2
- setiastro/saspro/translations/saspro_ru.ts +2 -2
- setiastro/saspro/translations/saspro_sw.ts +2 -2
- setiastro/saspro/translations/saspro_uk.ts +2 -2
- setiastro/saspro/translations/saspro_zh.ts +2 -2
- setiastro/saspro/translations/sw_translations.py +2 -2
- setiastro/saspro/translations/uk_translations.py +2 -2
- setiastro/saspro/translations/zh_translations.py +2 -2
- setiastro/saspro/window_shelf.py +62 -1
- {setiastrosuitepro-1.7.3.dist-info → setiastrosuitepro-1.7.5.dist-info}/METADATA +1 -1
- {setiastrosuitepro-1.7.3.dist-info → setiastrosuitepro-1.7.5.dist-info}/RECORD +52 -50
- {setiastrosuitepro-1.7.3.dist-info → setiastrosuitepro-1.7.5.dist-info}/entry_points.txt +1 -1
- {setiastrosuitepro-1.7.3.dist-info → setiastrosuitepro-1.7.5.dist-info}/WHEEL +0 -0
- {setiastrosuitepro-1.7.3.dist-info → setiastrosuitepro-1.7.5.dist-info}/licenses/LICENSE +0 -0
- {setiastrosuitepro-1.7.3.dist-info → setiastrosuitepro-1.7.5.dist-info}/licenses/license.txt +0 -0
|
@@ -196,7 +196,7 @@ from setiastro.saspro.resources import (
|
|
|
196
196
|
colorwheel_path, font_path, csv_icon_path, spinner_path, wims_path, narrowbandnormalization_path,
|
|
197
197
|
wimi_path, linearfit_path, debayer_path, aberration_path, acv_icon_path,
|
|
198
198
|
functionbundles_path, viewbundles_path, selectivecolor_path, rgbalign_path, planetarystacker_path,
|
|
199
|
-
background_path, script_icon_path, planetprojection_path,
|
|
199
|
+
background_path, script_icon_path, planetprojection_path,clonestampicon_path,
|
|
200
200
|
)
|
|
201
201
|
|
|
202
202
|
import faulthandler
|
|
@@ -691,8 +691,8 @@ class AstroSuiteProMainWindow(
|
|
|
691
691
|
self.apply_theme_from_settings()
|
|
692
692
|
self._populate_view_panels_menu()
|
|
693
693
|
# Startup check (no lambdas)
|
|
694
|
-
if self.settings.value("updates/check_on_startup", True, type=bool):
|
|
695
|
-
|
|
694
|
+
#if self.settings.value("updates/check_on_startup", True, type=bool):
|
|
695
|
+
# QTimer.singleShot(1500, self.check_for_updates_startup)
|
|
696
696
|
|
|
697
697
|
self._hdr_refresh_timer = QTimer(self)
|
|
698
698
|
self._hdr_refresh_timer.setSingleShot(True)
|
|
@@ -1473,7 +1473,7 @@ class AstroSuiteProMainWindow(
|
|
|
1473
1473
|
|
|
1474
1474
|
def _open_user_scripts_github(self):
|
|
1475
1475
|
# User script examples on GitHub
|
|
1476
|
-
url = QUrl("https://
|
|
1476
|
+
url = QUrl("https://drive.google.com/drive/folders/1TSxKZey4R_t7F2RsB53Hd1SBIGXv3-Nl?usp=drive_link")
|
|
1477
1477
|
QDesktopServices.openUrl(url)
|
|
1478
1478
|
|
|
1479
1479
|
def _open_scripts_discord_forum(self):
|
|
@@ -2798,7 +2798,7 @@ class AstroSuiteProMainWindow(
|
|
|
2798
2798
|
target = float(self.settings.value("display/target", 0.30, type=float))
|
|
2799
2799
|
sigma = float(self.settings.value("display/sigma", 5.0, type=float))
|
|
2800
2800
|
linked = bool(self.settings.value("display/stretch_linked", False, type=bool))
|
|
2801
|
-
|
|
2801
|
+
use_24 = self.settings.value("display/autostretch_24bit", True, type=bool)
|
|
2802
2802
|
|
|
2803
2803
|
# if your view exposes per-view overrides, prefer those
|
|
2804
2804
|
if hasattr(view, "autostretch_target"):
|
|
@@ -2824,7 +2824,7 @@ class AstroSuiteProMainWindow(
|
|
|
2824
2824
|
target_median=target,
|
|
2825
2825
|
linked=linked,
|
|
2826
2826
|
sigma=sigma,
|
|
2827
|
-
|
|
2827
|
+
use_24bit=use_24,
|
|
2828
2828
|
)
|
|
2829
2829
|
except Exception as e:
|
|
2830
2830
|
QMessageBox.warning(self, "Display-Stretch", f"Failed to apply autostretch:\n{e}")
|
|
@@ -3560,6 +3560,27 @@ class AstroSuiteProMainWindow(
|
|
|
3560
3560
|
dlg.resize(900, 650)
|
|
3561
3561
|
dlg.show()
|
|
3562
3562
|
|
|
3563
|
+
def _open_clone_stamp(self):
|
|
3564
|
+
from setiastro.saspro.clone_stamp import CloneStampDialogPro
|
|
3565
|
+
sw = self.mdi.activeSubWindow()
|
|
3566
|
+
if not sw:
|
|
3567
|
+
QMessageBox.information(self, "Clone Stamp", "No active image window.")
|
|
3568
|
+
return
|
|
3569
|
+
view = sw.widget()
|
|
3570
|
+
doc = getattr(view, "document", None)
|
|
3571
|
+
if doc is None or getattr(doc, "image", None) is None:
|
|
3572
|
+
QMessageBox.information(self, "Clone Stamp", "Active document has no image.")
|
|
3573
|
+
return
|
|
3574
|
+
|
|
3575
|
+
dlg = CloneStampDialogPro(self, doc)
|
|
3576
|
+
try:
|
|
3577
|
+
dlg.setWindowIcon(QIcon(clonestampicon_path))
|
|
3578
|
+
except Exception:
|
|
3579
|
+
pass
|
|
3580
|
+
dlg.resize(900, 650)
|
|
3581
|
+
dlg.show()
|
|
3582
|
+
|
|
3583
|
+
|
|
3563
3584
|
def _open_wavescale_hdr(self):
|
|
3564
3585
|
from setiastro.saspro.wavescale_hdr import WaveScaleHDRDialogPro
|
|
3565
3586
|
sw = self.mdi.activeSubWindow()
|
|
@@ -134,6 +134,7 @@ class MenuMixin:
|
|
|
134
134
|
m_fn.addAction(self.act_background_neutral)
|
|
135
135
|
m_fn.addAction(self.act_blemish)
|
|
136
136
|
m_fn.addAction(self.act_clahe)
|
|
137
|
+
m_fn.addAction(self.act_clone_stamp)
|
|
137
138
|
m_fn.addAction(self.act_convo)
|
|
138
139
|
m_fn.addAction(self.act_crop)
|
|
139
140
|
m_fn.addAction(self.act_curves)
|
|
@@ -36,7 +36,7 @@ from setiastro.saspro.resources import (
|
|
|
36
36
|
nbtorgb_path, freqsep_path, multiscale_decomp_path, contsub_path, halo_path, cosmic_path,
|
|
37
37
|
satellite_path, imagecombine_path, wims_path, wimi_path, linearfit_path,
|
|
38
38
|
debayer_path, aberration_path, functionbundles_path, viewbundles_path, planetarystacker_path,
|
|
39
|
-
selectivecolor_path, rgbalign_path, planetprojection_path,
|
|
39
|
+
selectivecolor_path, rgbalign_path, planetprojection_path, clonestampicon_path,
|
|
40
40
|
)
|
|
41
41
|
|
|
42
42
|
# Import shortcuts module
|
|
@@ -204,22 +204,11 @@ class ToolbarMixin:
|
|
|
204
204
|
tb_fn.addAction(self.act_remove_green)
|
|
205
205
|
tb_fn.addAction(self.act_convo)
|
|
206
206
|
tb_fn.addAction(self.act_extract_luma)
|
|
207
|
-
|
|
208
|
-
#btn_luma = tb_fn.widgetForAction(self.act_extract_luma)
|
|
209
|
-
#if isinstance(btn_luma, QToolButton):
|
|
210
|
-
# luma_menu = QMenu(btn_luma)
|
|
211
|
-
# luma_menu.addActions(self._luma_group.actions())
|
|
212
|
-
# btn_luma.setMenu(luma_menu)
|
|
213
|
-
# btn_luma.setPopupMode(QToolButton.ToolButtonPopupMode.MenuButtonPopup)
|
|
214
|
-
# btn_luma.setStyleSheet("""
|
|
215
|
-
# QToolButton { color: #dcdcdc; }
|
|
216
|
-
# QToolButton:pressed, QToolButton:checked { color: #DAA520; font-weight: 600; }
|
|
217
|
-
# """)
|
|
218
|
-
|
|
219
207
|
tb_fn.addAction(self.act_recombine_luma)
|
|
220
208
|
tb_fn.addAction(self.act_rgb_extract)
|
|
221
209
|
tb_fn.addAction(self.act_rgb_combine)
|
|
222
210
|
tb_fn.addAction(self.act_blemish)
|
|
211
|
+
tb_fn.addAction(self.act_clone_stamp)
|
|
223
212
|
tb_fn.addAction(self.act_wavescale_hdr)
|
|
224
213
|
tb_fn.addAction(self.act_wavescale_de)
|
|
225
214
|
tb_fn.addAction(self.act_clahe)
|
|
@@ -1005,6 +994,11 @@ class ToolbarMixin:
|
|
|
1005
994
|
self.act_blemish.setStatusTip(self.tr("Interactive blemish removal on the active view"))
|
|
1006
995
|
self.act_blemish.triggered.connect(self._open_blemish_blaster)
|
|
1007
996
|
|
|
997
|
+
self.act_clone_stamp = QAction(QIcon(clonestampicon_path), self.tr("Clone Stamp..."), self)
|
|
998
|
+
self.act_clone_stamp.setIconVisibleInMenu(True)
|
|
999
|
+
self.act_clone_stamp.setStatusTip(self.tr("Interactive clone stamp on the active view"))
|
|
1000
|
+
self.act_clone_stamp.triggered.connect(self._open_clone_stamp)
|
|
1001
|
+
|
|
1008
1002
|
self.act_wavescale_hdr = QAction(QIcon(hdr_path), self.tr("WaveScale HDR..."), self)
|
|
1009
1003
|
self.act_wavescale_hdr.setStatusTip(self.tr("Wave-scale HDR with luminance-masked starlet"))
|
|
1010
1004
|
self.act_wavescale_hdr.setIconVisibleInMenu(True)
|
|
@@ -1196,7 +1190,7 @@ class ToolbarMixin:
|
|
|
1196
1190
|
self.act_planetary_stacker.setStatusTip(self.tr("Stack SER videos (planetary/solar/lunar)"))
|
|
1197
1191
|
self.act_planetary_stacker.triggered.connect(self._open_planetary_stacker)
|
|
1198
1192
|
|
|
1199
|
-
self.act_planet_projection = QAction(QIcon(planetprojection_path), self.tr("
|
|
1193
|
+
self.act_planet_projection = QAction(QIcon(planetprojection_path), self.tr("3D Projection..."), self)
|
|
1200
1194
|
self.act_planet_projection.setIconVisibleInMenu(True)
|
|
1201
1195
|
self.act_planet_projection.setStatusTip(self.tr("View your planets with stereographic projection"))
|
|
1202
1196
|
self.act_planet_projection.triggered.connect(self._open_planet_projection)
|
|
@@ -1278,7 +1272,7 @@ class ToolbarMixin:
|
|
|
1278
1272
|
self.act_script_editor.setStatusTip(self.tr("Open the built-in script editor"))
|
|
1279
1273
|
self.act_script_editor.triggered.connect(self._show_script_editor)
|
|
1280
1274
|
|
|
1281
|
-
self.act_open_user_scripts_github = QAction(self.tr("Open User Scripts (
|
|
1275
|
+
self.act_open_user_scripts_github = QAction(self.tr("Open User Scripts (GoogleDrive)..."), self)
|
|
1282
1276
|
self.act_open_user_scripts_github.triggered.connect(self._open_user_scripts_github)
|
|
1283
1277
|
|
|
1284
1278
|
self.act_open_scripts_discord = QAction(self.tr("Open Scripts Forum (Discord)..."), self)
|
|
@@ -1416,6 +1410,7 @@ class ToolbarMixin:
|
|
|
1416
1410
|
reg("rgb_extract", self.act_rgb_extract)
|
|
1417
1411
|
reg("rgb_combine", self.act_rgb_combine)
|
|
1418
1412
|
reg("blemish_blaster", self.act_blemish)
|
|
1413
|
+
reg("clone_stamp", self.act_clone_stamp)
|
|
1419
1414
|
reg("wavescale_hdr", self.act_wavescale_hdr)
|
|
1420
1415
|
reg("wavescale_dark_enhance", self.act_wavescale_de)
|
|
1421
1416
|
reg("clahe", self.act_clahe)
|