setiastrosuitepro 1.7.4__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/_generated/build_info.py +2 -2
- setiastro/saspro/blemish_blaster.py +54 -14
- setiastro/saspro/clone_stamp.py +753 -0
- setiastro/saspro/gui/main_window.py +22 -1
- setiastro/saspro/gui/mixins/menu_mixin.py +1 -0
- setiastro/saspro/gui/mixins/toolbar_mixin.py +8 -13
- setiastro/saspro/resources.py +2 -0
- setiastro/saspro/stacking_suite.py +123 -65
- {setiastrosuitepro-1.7.4.dist-info → setiastrosuitepro-1.7.5.dist-info}/METADATA +1 -1
- {setiastrosuitepro-1.7.4.dist-info → setiastrosuitepro-1.7.5.dist-info}/RECORD +15 -13
- {setiastrosuitepro-1.7.4.dist-info → setiastrosuitepro-1.7.5.dist-info}/WHEEL +0 -0
- {setiastrosuitepro-1.7.4.dist-info → setiastrosuitepro-1.7.5.dist-info}/entry_points.txt +0 -0
- {setiastrosuitepro-1.7.4.dist-info → setiastrosuitepro-1.7.5.dist-info}/licenses/LICENSE +0 -0
- {setiastrosuitepro-1.7.4.dist-info → setiastrosuitepro-1.7.5.dist-info}/licenses/license.txt +0 -0
|
Binary file
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
# Auto-generated at build time. Do not edit.
|
|
2
|
-
BUILD_TIMESTAMP = "2026-01-
|
|
3
|
-
APP_VERSION = "1.7.
|
|
2
|
+
BUILD_TIMESTAMP = "2026-01-22T14:55:21Z"
|
|
3
|
+
APP_VERSION = "1.7.5"
|
|
@@ -6,8 +6,8 @@ from typing import Optional
|
|
|
6
6
|
from PyQt6.QtCore import Qt, QEvent, QPointF, QRunnable, QThreadPool, pyqtSlot, QObject, pyqtSignal
|
|
7
7
|
from PyQt6.QtGui import QImage, QPixmap, QPen, QBrush, QAction, QKeySequence, QColor, QWheelEvent, QIcon
|
|
8
8
|
from PyQt6.QtWidgets import (
|
|
9
|
-
QDialog, QVBoxLayout, QHBoxLayout, QFormLayout, QGroupBox, QLabel, QPushButton, QSlider,
|
|
10
|
-
QGraphicsView, QGraphicsScene, QGraphicsPixmapItem, QGraphicsEllipseItem, QMessageBox, QScrollArea, QCheckBox, QDoubleSpinBox
|
|
9
|
+
QDialog, QVBoxLayout, QHBoxLayout, QFormLayout, QGroupBox, QLabel, QPushButton, QSlider, QSizePolicy,
|
|
10
|
+
QGraphicsView, QGraphicsScene, QGraphicsPixmapItem, QGraphicsEllipseItem, QMessageBox, QScrollArea, QCheckBox, QDoubleSpinBox, QWidget, QFrame
|
|
11
11
|
)
|
|
12
12
|
from setiastro.saspro.imageops.stretch import stretch_color_image, stretch_mono_image
|
|
13
13
|
|
|
@@ -209,7 +209,7 @@ class BlemishBlasterDialogPro(QDialog):
|
|
|
209
209
|
self.scroll = QScrollArea(self)
|
|
210
210
|
self.scroll.setWidgetResizable(True)
|
|
211
211
|
self.scroll.setWidget(self.view)
|
|
212
|
-
|
|
212
|
+
self.scroll.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Expanding)
|
|
213
213
|
# --- Zoom controls (buttons) ---------------------------------
|
|
214
214
|
# --- Zoom controls (standard themed toolbuttons) ---------------
|
|
215
215
|
self._zoom = 1.0 # initial zoom factor
|
|
@@ -273,17 +273,57 @@ class BlemishBlasterDialogPro(QDialog):
|
|
|
273
273
|
bb.addWidget(self.btn_apply)
|
|
274
274
|
bb.addWidget(self.btn_close)
|
|
275
275
|
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
276
|
+
# ─────────────────────────────────────────────────────────────
|
|
277
|
+
# Layout: Left = Controls, Right = Preview (so preview gets height)
|
|
278
|
+
# ─────────────────────────────────────────────────────────────
|
|
279
|
+
root = QHBoxLayout(self)
|
|
280
|
+
root.setContentsMargins(8, 8, 8, 8)
|
|
281
|
+
root.setSpacing(10)
|
|
282
|
+
|
|
283
|
+
# ---- LEFT: Zoom + Controls + Buttons (scrollable on small screens) ----
|
|
284
|
+
left = QVBoxLayout()
|
|
285
|
+
left.setSpacing(10)
|
|
286
|
+
|
|
287
|
+
zoom_box = QGroupBox(self.tr("Zoom"))
|
|
288
|
+
zoom_lay = QHBoxLayout(zoom_box)
|
|
289
|
+
zoom_lay.addStretch(1)
|
|
290
|
+
zoom_lay.addWidget(self.btn_zoom_out)
|
|
291
|
+
zoom_lay.addWidget(self.btn_zoom_in)
|
|
292
|
+
zoom_lay.addWidget(self.btn_zoom_fit)
|
|
293
|
+
zoom_lay.addStretch(1)
|
|
294
|
+
|
|
295
|
+
left.addWidget(zoom_box)
|
|
296
|
+
left.addWidget(ctrls, 0)
|
|
297
|
+
|
|
298
|
+
btn_row = QWidget(self)
|
|
299
|
+
btn_row.setLayout(bb)
|
|
300
|
+
left.addWidget(btn_row, 0)
|
|
301
|
+
|
|
302
|
+
left.addStretch(1)
|
|
303
|
+
|
|
304
|
+
left_widget = QWidget(self)
|
|
305
|
+
left_widget.setLayout(left)
|
|
306
|
+
|
|
307
|
+
left_scroll = QScrollArea(self)
|
|
308
|
+
left_scroll.setWidgetResizable(True)
|
|
309
|
+
left_scroll.setMinimumWidth(320) # tweak 300–360
|
|
310
|
+
left_scroll.setWidget(left_widget)
|
|
311
|
+
|
|
312
|
+
# ---- vertical separator ----
|
|
313
|
+
sep = QFrame(self)
|
|
314
|
+
sep.setFrameShape(QFrame.Shape.VLine)
|
|
315
|
+
sep.setFrameShadow(QFrame.Shadow.Sunken)
|
|
316
|
+
|
|
317
|
+
# ---- RIGHT: Preview ----
|
|
318
|
+
right = QVBoxLayout()
|
|
319
|
+
right.setSpacing(8)
|
|
320
|
+
right.addWidget(self.scroll, 1)
|
|
321
|
+
|
|
322
|
+
# Add in order: controls left, preview right
|
|
323
|
+
root.addWidget(left_scroll, 0)
|
|
324
|
+
root.addWidget(sep)
|
|
325
|
+
root.addLayout(right, 1)
|
|
326
|
+
|
|
287
327
|
|
|
288
328
|
# behavior
|
|
289
329
|
self._threadpool = QThreadPool.globalInstance()
|