shinestacker 0.2.0.post1.dev1__tar.gz → 0.2.1__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.
Potentially problematic release.
This version of shinestacker might be problematic. Click here for more details.
- {shinestacker-0.2.0.post1.dev1/sandbox → shinestacker-0.2.1/.github/workflows}/pypi-publish.yml +1 -1
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/PKG-INFO +3 -1
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/README.md +2 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/docs/main.md +2 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/scripts/build_release.py +2 -8
- shinestacker-0.2.1/src/shinestacker/_version.py +1 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/app/main.py +1 -6
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/app/project.py +2 -1
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/app/retouch.py +3 -1
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/gui/main_window.py +3 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/gui/new_project.py +1 -6
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/gui/project_editor.py +0 -3
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/retouch/exif_data.py +1 -6
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/retouch/image_editor.py +0 -2
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/retouch/shortcuts_help.py +1 -6
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker.egg-info/PKG-INFO +3 -1
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker.egg-info/SOURCES.txt +5 -5
- shinestacker-0.2.0.post1.dev1/src/shinestacker/_version.py +0 -1
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/.flake8 +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/.github/workflows/ci-multiplatform.yml +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/.github/workflows/release.yml +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/.gitignore +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/CHANGELOG.md +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/LICENSE +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/docs/alignment.md +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/docs/balancing.md +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/docs/focus_stacking.md +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/docs/gui.md +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/docs/job.md +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/docs/multilayer.md +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/docs/noise.md +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/docs/vignetting.md +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/examples/balance-only.fsp +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/examples/complete-project.fsp +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/examples/focus-stack-1.ipynb +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/examples/focus-stack-2.ipynb +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/examples/input/img-jpg/0000.jpg +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/examples/input/img-jpg/0001.jpg +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/examples/input/img-jpg/0002.jpg +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/examples/input/img-jpg/0003.jpg +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/examples/input/img-jpg/0004.jpg +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/examples/input/img-jpg/0005.jpg +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/examples/input/img-noise/0001.jpg +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/examples/input/img-noise/0002.jpg +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/examples/input/img-noise/0003.jpg +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/examples/input/img-noise/0004.jpg +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/examples/input/img-noise/0005.jpg +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/examples/input/img-noise/0006.jpg +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/examples/input/img-tif/0000.tif +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/examples/input/img-tif/0001.tif +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/examples/input/img-tif/0002.tif +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/examples/input/img-tif/0003.tif +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/examples/input/img-tif/0004.tif +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/examples/input/img-tif/0005.tif +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/examples/input/img-vignetted/vig-0000.jpg +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/examples/input/img-vignetted/vig-0001.jpg +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/examples/input/img-vignetted/vig-0002.jpg +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/examples/input/img-vignetted/vig-0003.jpg +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/examples/stack-comparison.fsp +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/examples/stack-from-frames.fsp +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/examples/vignetting.fsp +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/img/flies.gif +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/img/flies_stack.jpg +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/img/flow-diagram.png +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/img/gui-finder.png +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/img/gui-project-new.png +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/img/gui-project-run.png +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/img/gui-retouch.png +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/pyproject.toml +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/sandbox/test_alignment_multiple.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/scripts/validate-tomli.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/setup.cfg +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/__init__.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/algorithms/__init__.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/algorithms/align.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/algorithms/balance.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/algorithms/core_utils.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/algorithms/depth_map.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/algorithms/exif.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/algorithms/multilayer.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/algorithms/noise_detection.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/algorithms/pyramid.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/algorithms/stack.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/algorithms/stack_framework.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/algorithms/utils.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/algorithms/vignetting.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/app/__init__.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/app/about_dialog.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/app/app_config.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/app/gui_utils.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/app/help_menu.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/app/open_frames.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/config/__init__.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/config/config.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/config/constants.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/config/gui_constants.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/core/__init__.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/core/colors.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/core/core_utils.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/core/exceptions.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/core/framework.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/core/logging.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/gui/__init__.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/gui/action_config.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/gui/actions_window.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/gui/colors.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/gui/gui_images.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/gui/gui_logging.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/gui/gui_run.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1/src/shinestacker/gui}/ico/focus_stack_bkg.png +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1/src/shinestacker/gui}/ico/shinestacker.icns +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1/src/shinestacker/gui}/ico/shinestacker.ico +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1/src/shinestacker/gui}/ico/shinestacker.png +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/gui/img/close-round-line-icon.png +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/gui/img/forward-button-icon.png +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/gui/img/play-button-round-icon.png +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/gui/img/plus-round-line-icon.png +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/gui/project_converter.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/gui/project_model.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/retouch/__init__.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/retouch/brush.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/retouch/brush_controller.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/retouch/brush_preview.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/retouch/file_loader.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/retouch/image_editor_ui.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/retouch/image_viewer.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/retouch/undo_manager.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker.egg-info/dependency_links.txt +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker.egg-info/entry_points.txt +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker.egg-info/requires.txt +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker.egg-info/top_level.txt +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/tests/test-align-balance.ipynb +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/tests/test-align.ipynb +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/tests/test-balance.ipynb +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/tests/test-exif.ipynb +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/tests/test-job.ipynb +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/tests/test-logging.ipynb +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/tests/test-multilayer.ipynb +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/tests/test-noise-detection.ipynb +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/tests/test-stack.ipynb +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/tests/test-vignetting.ipynb +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/tests/test_0000_logging.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/tests/test_0001_colors.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/tests/test_0005_make_test_img.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/tests/test_0010_job.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/tests/test_0020_noise_detection.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/tests/test_0030_align.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/tests/test_0031_align_precision.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/tests/test_0032_align_methods.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/tests/test_0040_balance.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/tests/test_0050_align_balance.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/tests/test_0060_stack.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/tests/test_0070_multilayer.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/tests/test_0080_exif.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/tests/test_0090_vignetting.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/tests/test_1000_brush_mask.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/tests/test_1010_gui.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/tests/test_1020_gui_images.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/tests/test_1030_gui_logging.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/tests/test_1040_action_config.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/tests/test_1050_project_converter.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/tests/test_1060_gui_run.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/tests/test_1070_project_editor.py +0 -0
- {shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/tests/test_1080_actions_window.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: shinestacker
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.1
|
|
4
4
|
Summary: ShineStacker
|
|
5
5
|
Author-email: Luca Lista <luka.lista@gmail.com>
|
|
6
6
|
License-Expression: LGPL-3.0
|
|
@@ -30,6 +30,8 @@ Dynamic: license-file
|
|
|
30
30
|
# Shine Stacker Processing Framework
|
|
31
31
|
|
|
32
32
|
[](https://github.com/lucalista/shinestacker/actions/workflows/ci-multiplatform.yml)
|
|
33
|
+
[](https://pypi.org/project/shinestacker/)
|
|
34
|
+
[](https://pypi.org/project/shinestacker/)
|
|
33
35
|
|
|
34
36
|
<img src='https://raw.githubusercontent.com/lucalista/shinestacker/main/img/flies.gif' width="400"> <img src='https://raw.githubusercontent.com/lucalista/shinestacker/main/img/flies_stack.jpg' width="400">
|
|
35
37
|
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
# Shine Stacker Processing Framework
|
|
2
2
|
|
|
3
3
|
[](https://github.com/lucalista/shinestacker/actions/workflows/ci-multiplatform.yml)
|
|
4
|
+
[](https://pypi.org/project/shinestacker/)
|
|
5
|
+
[](https://pypi.org/project/shinestacker/)
|
|
4
6
|
|
|
5
7
|
<img src='https://raw.githubusercontent.com/lucalista/shinestacker/main/img/flies.gif' width="400"> <img src='https://raw.githubusercontent.com/lucalista/shinestacker/main/img/flies_stack.jpg' width="400">
|
|
6
8
|
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
# Shine Stacker Processing Framework
|
|
2
2
|
|
|
3
3
|
[](https://github.com/lucalista/shinestacker/actions/workflows/ci-multiplatform.yml)
|
|
4
|
+
[](https://pypi.org/project/shinestacker/)
|
|
5
|
+
[](https://pypi.org/project/shinestacker/)
|
|
4
6
|
|
|
5
7
|
<img src='../img/flies.gif' width="400"> <img src='../img/flies_stack.jpg' width="400">
|
|
6
8
|
|
|
@@ -20,20 +20,14 @@ pyinstaller_cmd = ["pyinstaller", "--onedir", f"--name={app_name}", "--paths=src
|
|
|
20
20
|
f"--distpath=dist/{package_dir}", f"--collect-all={project_name}",
|
|
21
21
|
"--collect-data=imagecodecs", "--collect-submodules=imagecodecs", "--copy-metadata=imagecodecs"]
|
|
22
22
|
if sys_name == 'darwin':
|
|
23
|
-
pyinstaller_cmd += ["--windowed", "--icon=ico/shinestacker.icns"]
|
|
23
|
+
pyinstaller_cmd += ["--windowed", "--icon=src/shinestacker/gui/ico/shinestacker.icns"]
|
|
24
24
|
elif sys_name == 'windows':
|
|
25
|
-
pyinstaller_cmd += ["--windowed", "--icon=ico/shinestacker.ico"]
|
|
25
|
+
pyinstaller_cmd += ["--windowed", "--icon=src/shinestacker/gui/ico/shinestacker.ico"]
|
|
26
26
|
pyinstaller_cmd += ["src/shinestacker/app/main.py"]
|
|
27
27
|
|
|
28
28
|
print(" ".join(pyinstaller_cmd))
|
|
29
29
|
subprocess.run(pyinstaller_cmd, check=True)
|
|
30
30
|
|
|
31
|
-
ico_dir = project_root / "ico"
|
|
32
|
-
target_ico = dist_dir / package_dir / "ico"
|
|
33
|
-
if target_ico.exists():
|
|
34
|
-
shutil.rmtree(target_ico)
|
|
35
|
-
shutil.copytree(ico_dir, target_ico)
|
|
36
|
-
|
|
37
31
|
examples_dir = project_root / "examples"
|
|
38
32
|
target_examples = dist_dir / package_dir / "examples"
|
|
39
33
|
target_examples.mkdir(exist_ok=True)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = '0.2.1'
|
|
@@ -138,12 +138,7 @@ expert options are visible by default.
|
|
|
138
138
|
app.setAttribute(Qt.AA_DontUseNativeMenuBar)
|
|
139
139
|
else:
|
|
140
140
|
disable_macos_special_menu_items()
|
|
141
|
-
icon_path = f
|
|
142
|
-
if os.path.exists(f'{icon_path}/ico'):
|
|
143
|
-
icon_path = f'{icon_path}/ico'
|
|
144
|
-
else:
|
|
145
|
-
icon_path = f'{icon_path}/../ico'
|
|
146
|
-
icon_path = f'{icon_path}/shinestacker.png'
|
|
141
|
+
icon_path = f"{os.path.dirname(__file__)}/../gui/ico/shinestacker.png"
|
|
147
142
|
app.setWindowIcon(QIcon(icon_path))
|
|
148
143
|
main_app = MainApp()
|
|
149
144
|
app.main_app = main_app
|
|
@@ -73,7 +73,8 @@ expert options are visible by default.
|
|
|
73
73
|
app.setAttribute(Qt.AA_DontUseNativeMenuBar)
|
|
74
74
|
else:
|
|
75
75
|
disable_macos_special_menu_items()
|
|
76
|
-
|
|
76
|
+
icon_path = f"{os.path.dirname(__file__)}/../gui/ico/shinestacker.png"
|
|
77
|
+
app.setWindowIcon(QIcon(icon_path))
|
|
77
78
|
window = ProjectApp()
|
|
78
79
|
if args['expert']:
|
|
79
80
|
window.set_expert_options()
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import os
|
|
1
2
|
import sys
|
|
2
3
|
import argparse
|
|
3
4
|
from PySide6.QtWidgets import QApplication, QMenu
|
|
@@ -70,7 +71,8 @@ Multiple directories can be specified separated by ';'.
|
|
|
70
71
|
app.setAttribute(Qt.AA_DontUseNativeMenuBar)
|
|
71
72
|
else:
|
|
72
73
|
disable_macos_special_menu_items()
|
|
73
|
-
|
|
74
|
+
icon_path = f"{os.path.dirname(__file__)}/../gui/ico/shinestacker.png"
|
|
75
|
+
app.setWindowIcon(QIcon(icon_path))
|
|
74
76
|
editor = RetouchApp()
|
|
75
77
|
app.editor = editor
|
|
76
78
|
editor.show()
|
|
@@ -414,6 +414,9 @@ class MainWindow(ActionsWindow, LogManager):
|
|
|
414
414
|
menu.addAction(self.job_retouch_path_action)
|
|
415
415
|
menu.exec(event.globalPos())
|
|
416
416
|
|
|
417
|
+
def get_icon(self, icon):
|
|
418
|
+
return QIcon(os.path.join(self.script_dir, f"img/{icon}.png"))
|
|
419
|
+
|
|
417
420
|
def get_retouch_path(self, job):
|
|
418
421
|
frames_path = [get_action_output_path(action)[0]
|
|
419
422
|
for action in job.sub_actions if action.type_name == constants.ACTION_COMBO]
|
|
@@ -39,12 +39,7 @@ class NewProjectDialog(QDialog):
|
|
|
39
39
|
self.layout.addRow(label)
|
|
40
40
|
|
|
41
41
|
def create_form(self):
|
|
42
|
-
icon_path = f
|
|
43
|
-
if os.path.exists(f'{icon_path}/ico'):
|
|
44
|
-
icon_path = f'{icon_path}/ico'
|
|
45
|
-
else:
|
|
46
|
-
icon_path = f'{icon_path}/../ico'
|
|
47
|
-
icon_path = f'{icon_path}/shinestacker.png'
|
|
42
|
+
icon_path = f"{os.path.dirname(__file__)}/ico/shinestacker.png"
|
|
48
43
|
app_icon = QIcon(icon_path)
|
|
49
44
|
icon_pixmap = app_icon.pixmap(128, 128)
|
|
50
45
|
icon_label = QLabel()
|
|
@@ -328,9 +328,6 @@ class ProjectEditor(QMainWindow):
|
|
|
328
328
|
label = QLabel(html_text)
|
|
329
329
|
widget_list.setItemWidget(item, label)
|
|
330
330
|
|
|
331
|
-
def get_icon(self, icon):
|
|
332
|
-
return QIcon(os.path.join(self.script_dir, f"img/{icon}.png"))
|
|
333
|
-
|
|
334
331
|
def add_action_CombinedActions(self):
|
|
335
332
|
self.add_action(constants.ACTION_COMBO)
|
|
336
333
|
|
|
@@ -32,12 +32,7 @@ class ExifData(QDialog):
|
|
|
32
32
|
self.layout.addRow(label)
|
|
33
33
|
|
|
34
34
|
def create_form(self):
|
|
35
|
-
icon_path = f
|
|
36
|
-
if os.path.exists(f'{icon_path}/ico'):
|
|
37
|
-
icon_path = f'{icon_path}/ico'
|
|
38
|
-
else:
|
|
39
|
-
icon_path = f'{icon_path}/../ico'
|
|
40
|
-
icon_path = f'{icon_path}/shinestacker.png'
|
|
35
|
+
icon_path = f"{os.path.dirname(__file__)}/../gui/ico/shinestacker.png"
|
|
41
36
|
app_icon = QIcon(icon_path)
|
|
42
37
|
icon_pixmap = app_icon.pixmap(128, 128)
|
|
43
38
|
icon_label = QLabel()
|
{shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/retouch/image_editor.py
RENAMED
|
@@ -364,8 +364,6 @@ class ImageEditor(QMainWindow):
|
|
|
364
364
|
QMessageBox.critical(self, "Save Error", f"Could not save file: {str(e)}")
|
|
365
365
|
|
|
366
366
|
def select_exif_path(self):
|
|
367
|
-
if self.current_stack is None:
|
|
368
|
-
return
|
|
369
367
|
path, _ = QFileDialog.getOpenFileName(None, "Select file with exif data")
|
|
370
368
|
if path:
|
|
371
369
|
self.exif_path = path
|
{shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/retouch/shortcuts_help.py
RENAMED
|
@@ -44,12 +44,7 @@ class ShortcutsHelp(QDialog):
|
|
|
44
44
|
layout.addRow(label)
|
|
45
45
|
|
|
46
46
|
def create_form(self, left_layout, right_layout):
|
|
47
|
-
icon_path = f
|
|
48
|
-
if os.path.exists(f'{icon_path}/ico'):
|
|
49
|
-
icon_path = f'{icon_path}/ico'
|
|
50
|
-
else:
|
|
51
|
-
icon_path = f'{icon_path}/../ico'
|
|
52
|
-
icon_path = f'{icon_path}/shinestacker.png'
|
|
47
|
+
icon_path = f"{os.path.dirname(__file__)}/../gui/ico/shinestacker.png"
|
|
53
48
|
app_icon = QIcon(icon_path)
|
|
54
49
|
icon_pixmap = app_icon.pixmap(128, 128)
|
|
55
50
|
icon_label = QLabel()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: shinestacker
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.1
|
|
4
4
|
Summary: ShineStacker
|
|
5
5
|
Author-email: Luca Lista <luka.lista@gmail.com>
|
|
6
6
|
License-Expression: LGPL-3.0
|
|
@@ -30,6 +30,8 @@ Dynamic: license-file
|
|
|
30
30
|
# Shine Stacker Processing Framework
|
|
31
31
|
|
|
32
32
|
[](https://github.com/lucalista/shinestacker/actions/workflows/ci-multiplatform.yml)
|
|
33
|
+
[](https://pypi.org/project/shinestacker/)
|
|
34
|
+
[](https://pypi.org/project/shinestacker/)
|
|
33
35
|
|
|
34
36
|
<img src='https://raw.githubusercontent.com/lucalista/shinestacker/main/img/flies.gif' width="400"> <img src='https://raw.githubusercontent.com/lucalista/shinestacker/main/img/flies_stack.jpg' width="400">
|
|
35
37
|
|
|
@@ -5,6 +5,7 @@ LICENSE
|
|
|
5
5
|
README.md
|
|
6
6
|
pyproject.toml
|
|
7
7
|
.github/workflows/ci-multiplatform.yml
|
|
8
|
+
.github/workflows/pypi-publish.yml
|
|
8
9
|
.github/workflows/release.yml
|
|
9
10
|
docs/alignment.md
|
|
10
11
|
docs/balancing.md
|
|
@@ -44,10 +45,6 @@ examples/input/img-vignetted/vig-0000.jpg
|
|
|
44
45
|
examples/input/img-vignetted/vig-0001.jpg
|
|
45
46
|
examples/input/img-vignetted/vig-0002.jpg
|
|
46
47
|
examples/input/img-vignetted/vig-0003.jpg
|
|
47
|
-
ico/focus_stack_bkg.png
|
|
48
|
-
ico/shinestacker.icns
|
|
49
|
-
ico/shinestacker.ico
|
|
50
|
-
ico/shinestacker.png
|
|
51
48
|
img/flies.gif
|
|
52
49
|
img/flies_stack.jpg
|
|
53
50
|
img/flow-diagram.png
|
|
@@ -55,7 +52,6 @@ img/gui-finder.png
|
|
|
55
52
|
img/gui-project-new.png
|
|
56
53
|
img/gui-project-run.png
|
|
57
54
|
img/gui-retouch.png
|
|
58
|
-
sandbox/pypi-publish.yml
|
|
59
55
|
sandbox/test_alignment_multiple.py
|
|
60
56
|
scripts/build_release.py
|
|
61
57
|
scripts/validate-tomli.py
|
|
@@ -111,6 +107,10 @@ src/shinestacker/gui/new_project.py
|
|
|
111
107
|
src/shinestacker/gui/project_converter.py
|
|
112
108
|
src/shinestacker/gui/project_editor.py
|
|
113
109
|
src/shinestacker/gui/project_model.py
|
|
110
|
+
src/shinestacker/gui/ico/focus_stack_bkg.png
|
|
111
|
+
src/shinestacker/gui/ico/shinestacker.icns
|
|
112
|
+
src/shinestacker/gui/ico/shinestacker.ico
|
|
113
|
+
src/shinestacker/gui/ico/shinestacker.png
|
|
114
114
|
src/shinestacker/gui/img/close-round-line-icon.png
|
|
115
115
|
src/shinestacker/gui/img/forward-button-icon.png
|
|
116
116
|
src/shinestacker/gui/img/play-button-round-icon.png
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = '0.2.0.post1.dev1'
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/examples/input/img-vignetted/vig-0000.jpg
RENAMED
|
File without changes
|
{shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/examples/input/img-vignetted/vig-0001.jpg
RENAMED
|
File without changes
|
{shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/examples/input/img-vignetted/vig-0002.jpg
RENAMED
|
File without changes
|
{shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/examples/input/img-vignetted/vig-0003.jpg
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/algorithms/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/algorithms/core_utils.py
RENAMED
|
File without changes
|
{shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/algorithms/depth_map.py
RENAMED
|
File without changes
|
|
File without changes
|
{shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/algorithms/multilayer.py
RENAMED
|
File without changes
|
{shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/algorithms/noise_detection.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/algorithms/stack_framework.py
RENAMED
|
File without changes
|
|
File without changes
|
{shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/algorithms/vignetting.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/config/gui_constants.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1/src/shinestacker/gui}/ico/focus_stack_bkg.png
RENAMED
|
File without changes
|
{shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1/src/shinestacker/gui}/ico/shinestacker.icns
RENAMED
|
File without changes
|
{shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1/src/shinestacker/gui}/ico/shinestacker.ico
RENAMED
|
File without changes
|
{shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1/src/shinestacker/gui}/ico/shinestacker.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/gui/project_converter.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/retouch/brush_controller.py
RENAMED
|
File without changes
|
{shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/retouch/brush_preview.py
RENAMED
|
File without changes
|
{shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/retouch/file_loader.py
RENAMED
|
File without changes
|
{shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/retouch/image_editor_ui.py
RENAMED
|
File without changes
|
{shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/retouch/image_viewer.py
RENAMED
|
File without changes
|
{shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker/retouch/undo_manager.py
RENAMED
|
File without changes
|
{shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker.egg-info/entry_points.txt
RENAMED
|
File without changes
|
|
File without changes
|
{shinestacker-0.2.0.post1.dev1 → shinestacker-0.2.1}/src/shinestacker.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|