shinestacker 1.1.0__py3-none-any.whl → 1.2.1__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 shinestacker might be problematic. Click here for more details.

Files changed (38) hide show
  1. shinestacker/_version.py +1 -1
  2. shinestacker/algorithms/__init__.py +4 -1
  3. shinestacker/algorithms/align.py +149 -34
  4. shinestacker/algorithms/balance.py +364 -166
  5. shinestacker/algorithms/base_stack_algo.py +6 -0
  6. shinestacker/algorithms/depth_map.py +1 -1
  7. shinestacker/algorithms/multilayer.py +22 -13
  8. shinestacker/algorithms/noise_detection.py +7 -8
  9. shinestacker/algorithms/pyramid.py +3 -2
  10. shinestacker/algorithms/pyramid_auto.py +141 -0
  11. shinestacker/algorithms/pyramid_tiles.py +199 -44
  12. shinestacker/algorithms/stack.py +20 -20
  13. shinestacker/algorithms/stack_framework.py +136 -156
  14. shinestacker/algorithms/utils.py +175 -1
  15. shinestacker/algorithms/vignetting.py +26 -8
  16. shinestacker/config/constants.py +31 -6
  17. shinestacker/core/framework.py +12 -12
  18. shinestacker/gui/action_config.py +59 -7
  19. shinestacker/gui/action_config_dialog.py +427 -283
  20. shinestacker/gui/base_form_dialog.py +11 -6
  21. shinestacker/gui/gui_images.py +10 -10
  22. shinestacker/gui/gui_run.py +1 -1
  23. shinestacker/gui/main_window.py +6 -5
  24. shinestacker/gui/menu_manager.py +16 -2
  25. shinestacker/gui/new_project.py +26 -22
  26. shinestacker/gui/project_controller.py +43 -27
  27. shinestacker/gui/project_converter.py +2 -8
  28. shinestacker/gui/project_editor.py +50 -27
  29. shinestacker/gui/tab_widget.py +3 -3
  30. shinestacker/retouch/exif_data.py +5 -5
  31. shinestacker/retouch/shortcuts_help.py +4 -4
  32. shinestacker/retouch/vignetting_filter.py +12 -8
  33. {shinestacker-1.1.0.dist-info → shinestacker-1.2.1.dist-info}/METADATA +1 -1
  34. {shinestacker-1.1.0.dist-info → shinestacker-1.2.1.dist-info}/RECORD +38 -37
  35. {shinestacker-1.1.0.dist-info → shinestacker-1.2.1.dist-info}/WHEEL +0 -0
  36. {shinestacker-1.1.0.dist-info → shinestacker-1.2.1.dist-info}/entry_points.txt +0 -0
  37. {shinestacker-1.1.0.dist-info → shinestacker-1.2.1.dist-info}/licenses/LICENSE +0 -0
  38. {shinestacker-1.1.0.dist-info → shinestacker-1.2.1.dist-info}/top_level.txt +0 -0
@@ -25,14 +25,14 @@ class ExifData(BaseFormDialog):
25
25
  def add_bold_label(self, label):
26
26
  label = QLabel(label)
27
27
  label.setStyleSheet("font-weight: bold")
28
- self.layout.addRow(label)
28
+ self.form_layout.addRow(label)
29
29
 
30
30
  def create_form(self):
31
- self.layout.addRow(icon_container())
31
+ self.form_layout.addRow(icon_container())
32
32
 
33
33
  spacer = QLabel("")
34
34
  spacer.setFixedHeight(10)
35
- self.layout.addRow(spacer)
35
+ self.form_layout.addRow(spacer)
36
36
  self.add_bold_label("EXIF data")
37
37
  shortcuts = {}
38
38
  if self.exif is None:
@@ -47,6 +47,6 @@ class ExifData(BaseFormDialog):
47
47
  else:
48
48
  d = f"{d}"
49
49
  if "<<<" not in d and k != 'IPTCNAA':
50
- self.layout.addRow(f"<b>{k}:</b>", QLabel(d))
50
+ self.form_layout.addRow(f"<b>{k}:</b>", QLabel(d))
51
51
  else:
52
- self.layout.addRow("-", QLabel("Empty EXIF dictionary"))
52
+ self.form_layout.addRow("-", QLabel("Empty EXIF dictionary"))
@@ -10,7 +10,7 @@ class ShortcutsHelp(QDialog):
10
10
  super().__init__(parent)
11
11
  self.setWindowTitle("Shortcut Help")
12
12
  self.resize(600, self.height())
13
- self.layout = QVBoxLayout(self)
13
+ self.main_layout = QVBoxLayout(self)
14
14
  main_widget = QWidget()
15
15
  main_layout = QHBoxLayout(main_widget)
16
16
  main_layout.setContentsMargins(0, 0, 0, 0)
@@ -28,14 +28,14 @@ class ShortcutsHelp(QDialog):
28
28
  right_layout.setLabelAlignment(Qt.AlignLeft)
29
29
  main_layout.addWidget(left_column)
30
30
  main_layout.addWidget(right_column)
31
- self.layout.addWidget(main_widget)
31
+ self.main_layout.addWidget(main_widget)
32
32
  self.create_form(left_layout, right_layout)
33
33
  button_box = QHBoxLayout()
34
34
  ok_button = QPushButton("OK")
35
35
  ok_button.setFixedWidth(100)
36
36
  ok_button.setFocus()
37
37
  button_box.addWidget(ok_button)
38
- self.layout.addLayout(button_box)
38
+ self.main_layout.addLayout(button_box)
39
39
  ok_button.clicked.connect(self.accept)
40
40
 
41
41
  def add_bold_label(self, layout, label):
@@ -44,7 +44,7 @@ class ShortcutsHelp(QDialog):
44
44
  layout.addRow(label)
45
45
 
46
46
  def create_form(self, left_layout, right_layout):
47
- self.layout.insertWidget(0, icon_container())
47
+ self.main_layout.insertWidget(0, icon_container())
48
48
 
49
49
  shortcuts = {
50
50
  "M": "show master layer",
@@ -1,6 +1,6 @@
1
1
  # pylint: disable=C0114, C0115, C0116, E0611, W0221, R0902
2
2
  from PySide6.QtCore import Qt
3
- from PySide6.QtWidgets import QSpinBox, QCheckBox, QLabel, QHBoxLayout, QSlider
3
+ from PySide6.QtWidgets import QSpinBox, QCheckBox, QLabel, QHBoxLayout, QSlider, QComboBox
4
4
  from .. config.constants import constants
5
5
  from .. algorithms.vignetting import correct_vignetting
6
6
  from .base_filter import OneSliderBaseFilter
@@ -20,11 +20,15 @@ class VignettingFilter(OneSliderBaseFilter):
20
20
  self.threshold_initial_value = constants.DEFAULT_BLACK_THRESHOLD
21
21
  self.threshold_format = "{:.1f}"
22
22
 
23
+ def get_subsample_factor(self):
24
+ return constants.FIELD_SUBSAMPLE_VALUES[
25
+ constants.FIELD_SUBSAMPLE_OPTIONS.index(self.subsample_box.currentText())]
26
+
23
27
  def apply(self, image, strength):
24
28
  return correct_vignetting(image, max_correction=strength,
25
29
  black_threshold=self.threshold_slider.value(),
26
30
  r_steps=self.r_steps_box.value(),
27
- subsample=self.subsample_box.value(),
31
+ subsample=self.get_subsample_factor(),
28
32
  fast_subsampling=True)
29
33
 
30
34
  def add_widgets(self, layout, dlg):
@@ -42,11 +46,10 @@ class VignettingFilter(OneSliderBaseFilter):
42
46
  layout.addLayout(threshold_layout)
43
47
  subsample_layout = QHBoxLayout()
44
48
  subsample_label = QLabel("Subsample:")
45
- self.subsample_box = QSpinBox()
46
- self.subsample_box.setFixedWidth(50)
47
- self.subsample_box.setRange(1, 50)
48
- self.subsample_box.setValue(constants.DEFAULT_VIGN_SUBSAMPLE)
49
- self.subsample_box.valueChanged.connect(self.threshold_changed)
49
+ self.subsample_box = QComboBox()
50
+ self.subsample_box.addItems(constants.FIELD_SUBSAMPLE_OPTIONS)
51
+ self.subsample_box.setFixedWidth(150)
52
+ self.subsample_box.currentTextChanged.connect(self.threshold_changed)
50
53
  self.fast_subsampling_check = QCheckBox("Fast subsampling")
51
54
  self.fast_subsampling_check.setChecked(constants.DEFAULT_VIGN_FAST_SUBSAMPLING)
52
55
  r_steps_label = QLabel("Radial steps:")
@@ -64,6 +67,7 @@ class VignettingFilter(OneSliderBaseFilter):
64
67
  layout.addWidget(self.fast_subsampling_check)
65
68
 
66
69
  def threshold_changed(self, val):
67
- float_val = self.threshold_max_value * float(val) / self.threshold_max_range
70
+ subsample = self.get_subsample_factor()
71
+ float_val = self.threshold_max_value * float(subsample) / self.threshold_max_range
68
72
  self.threshold_label.setText(self.threshold_format.format(float_val))
69
73
  self.param_changed(val)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: shinestacker
3
- Version: 1.1.0
3
+ Version: 1.2.1
4
4
  Summary: ShineStacker
5
5
  Author-email: Luca Lista <luka.lista@gmail.com>
6
6
  License-Expression: LGPL-3.0
@@ -1,21 +1,22 @@
1
1
  shinestacker/__init__.py,sha256=uq2fjAw2z_6TpH3mOcWFZ98GoEPRsNhTAK8N0MMm_e8,448
2
- shinestacker/_version.py,sha256=XIz3qAg9G9YysQi3Ryp0CN3rtc_JiecHZ9L2vEzcM6s,21
3
- shinestacker/algorithms/__init__.py,sha256=c4kRrdTLlVI70Q16XkI1RSmz5MD7npDqIpO_02jTG6g,747
4
- shinestacker/algorithms/align.py,sha256=EhsV50QtpLSJG0uDMfOJw89u8CGFJvBC2sYuJg5cv6g,17516
5
- shinestacker/algorithms/balance.py,sha256=iSjO-pl0vQv58iEQ077EUcDTAExMKDBdtXmJXbMhazk,16721
6
- shinestacker/algorithms/base_stack_algo.py,sha256=O7pDXqLM8MBdLR634Vk3UNV6cEV2q0U7CNcnpC_AOig,2363
2
+ shinestacker/_version.py,sha256=VvDq5py76uDFeq6tv3EFMgTHX4rtDyt6nw0tPm3Wrkk,21
3
+ shinestacker/algorithms/__init__.py,sha256=1FwVJ3w9GGbFFkjYJRUedTvcdE4j0ieSgaH9RC9iCY4,877
4
+ shinestacker/algorithms/align.py,sha256=PvjxHgP4Q19jmt6LS3nGcimCOywHglmxXMlfxo7dCjc,22641
5
+ shinestacker/algorithms/balance.py,sha256=Rj4dPvEiXBb0VNJPJd60wYYgevlO7xmg7H9Onxmabbs,23508
6
+ shinestacker/algorithms/base_stack_algo.py,sha256=W-VSrCF0-lE_OOsxsnZvJ3BI0NqRKIRMciQV-ui5t_g,2515
7
7
  shinestacker/algorithms/denoise.py,sha256=GL3Z4_6MHxSa7Wo4ZzQECZS87tHBFqO0sIVF_jPuYQU,426
8
- shinestacker/algorithms/depth_map.py,sha256=KVThrnynPKuijlh-DrenSkdkZ0Qm6TaNMYKhRByhcN4,5682
8
+ shinestacker/algorithms/depth_map.py,sha256=m0_Qm8FLDeSWyQEMNx29PzXp_VFGar7gY3jWxq_10t8,5713
9
9
  shinestacker/algorithms/exif.py,sha256=SM4ZDDe8hCJ3xY6053FNndOiwzEStzdp0WrXurlcHVc,9429
10
- shinestacker/algorithms/multilayer.py,sha256=-pQXDlooSMGKPhMgF-_naXdkGdolclYvSD-RrjwLiyI,9328
11
- shinestacker/algorithms/noise_detection.py,sha256=CJb57mE7ePJBgrwnsEkeK8xVIl2Hrzti11ZEI6JQczs,9218
12
- shinestacker/algorithms/pyramid.py,sha256=cxwA6gf02009dFv5-m79NpJkD58-Wbu3im4bfA5HVUc,8822
13
- shinestacker/algorithms/pyramid_tiles.py,sha256=967L42MfwSOewisqpAzuXivZgVoKZbIjDIQVWP1_rHk,5094
10
+ shinestacker/algorithms/multilayer.py,sha256=SfF51orenT3k15St_EUJcwnfOZ8Y5X5ZhStOWygjn1g,9838
11
+ shinestacker/algorithms/noise_detection.py,sha256=Ku0xgc_FFHzycSObDNXAux5scP3PVBeffGoYVdNJci0,9180
12
+ shinestacker/algorithms/pyramid.py,sha256=lmd-lw4bzrpcfBaLnBXHuOJ9J7-5sWq4dC9p_EejqXA,8881
13
+ shinestacker/algorithms/pyramid_auto.py,sha256=ByDH7Xblqj4YfNwsCWwN3wv2xL6gYp2lFnvpNPSEawM,6161
14
+ shinestacker/algorithms/pyramid_tiles.py,sha256=SzjTSheme8MP8nQXfOu8QHbzrtpuQX2aIsBVr5aM4Mc,12165
14
15
  shinestacker/algorithms/sharpen.py,sha256=h7PMJBYxucg194Usp_6pvItPUMFYbT-ebAc_-7XBFUw,949
15
- shinestacker/algorithms/stack.py,sha256=T1y-qoYUNzcIpnhKcou_4ifiKtGC2ZA1bOZXlfnKB6A,5045
16
- shinestacker/algorithms/stack_framework.py,sha256=fHdU8uYZquRut6NW_1vHbTCjPD99gQfOhVDdaaLZH34,12334
17
- shinestacker/algorithms/utils.py,sha256=GSKPUxU98Q8F0k4TgY9ydEgBul1gf2I0ypdmyDm--Mg,3371
18
- shinestacker/algorithms/vignetting.py,sha256=yW-1TF4tesLWfKQOS0XxRkOEN82U-YDmMaj09C9cH4M,9552
16
+ shinestacker/algorithms/stack.py,sha256=UN2XHb-x-qXtescUCsOLK8GKSYx26AFpKa2xCMJKhVo,4997
17
+ shinestacker/algorithms/stack_framework.py,sha256=Y1uuXYbpCFuPYWumMhx040Q4FkylPwKkz6iXz8ay2aY,11831
18
+ shinestacker/algorithms/utils.py,sha256=jImR2XF73gsLRZMic0kv8cyCuO2Zq21tX4kUhaTcfzI,11301
19
+ shinestacker/algorithms/vignetting.py,sha256=3E-ulzw8dggAefyJwzQI056J5IGlV_vV2zPrO0DGVGk,10208
19
20
  shinestacker/algorithms/white_balance.py,sha256=PMKsBtxOSn5aRr_Gkx1StHS4eN6kBN2EhNnhg4UG24g,501
20
21
  shinestacker/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
21
22
  shinestacker/app/about_dialog.py,sha256=pkH7nnxUP8yc0D3vRGd1jRb5cwi1nDVbQRk_OC9yLk8,4144
@@ -27,32 +28,32 @@ shinestacker/app/project.py,sha256=W0u715LZne_PNJvg9msSy27ybIjgDXiEAQdJ7_6BjYI,2
27
28
  shinestacker/app/retouch.py,sha256=ZQ-nRKnHo6xurcP34RNqaAWkmuGBjJ5jE05hTQ_ycis,2482
28
29
  shinestacker/config/__init__.py,sha256=aXxi-LmAvXd0daIFrVnTHE5OCaYeK1uf1BKMr7oaXQs,197
29
30
  shinestacker/config/config.py,sha256=eBko2D3ADhLTIm9X6hB_a_WsIjwgfE-qmBVkhP1XSvc,1636
30
- shinestacker/config/constants.py,sha256=X9e0fXr7ZHN9DCEMiObpanNJfZ5cMgWJdm3Xybmh-Wk,6232
31
+ shinestacker/config/constants.py,sha256=M8sKfZdGBhWY_wuJ40F_CEPtspPoYhrva4WFHX5bD6s,7145
31
32
  shinestacker/config/gui_constants.py,sha256=5DR-ET1oeMMD7lIsjvAwSuln89A7I9wy9VuAeRo2G64,2575
32
33
  shinestacker/core/__init__.py,sha256=IUEIx6SQ3DygDEHN3_E6uKpHjHtUa4a_U_1dLd_8yEU,484
33
34
  shinestacker/core/colors.py,sha256=kr_tJA1iRsdck2JaYDb2lS-codZ4Ty9gdu3kHfiWvuM,1340
34
35
  shinestacker/core/core_utils.py,sha256=ulJhzen5McAb5n6wWNA_KB4U_PdTEr-H2TCQkVKUaOw,1421
35
36
  shinestacker/core/exceptions.py,sha256=2-noG-ORAGdvDhL8jBQFs0xxZS4fI6UIkMqrWekgk2c,1618
36
- shinestacker/core/framework.py,sha256=zCnJuQrHNpwEgJW23_BgS7iQrLolRWTAMB1oRp_a7Kk,7447
37
+ shinestacker/core/framework.py,sha256=9uAvITAmzWnKFApLNtPf6Ah7nGJAxQ3I5nw_b2sVGQA,7628
37
38
  shinestacker/core/logging.py,sha256=9SuSSy9Usbh7zqmLYMqkmy-VBkOJW000lwqAR0XQs30,3067
38
39
  shinestacker/gui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
39
- shinestacker/gui/action_config.py,sha256=yXNDv0MyONbHk4iUrkvMkLKKaDvpJyzA5Yr0Eikgo0c,16986
40
- shinestacker/gui/action_config_dialog.py,sha256=Xb8DryEQt9R3VvM2DVoT_SdlJMU_qzJs2Z7NdLeqsgY,34520
41
- shinestacker/gui/base_form_dialog.py,sha256=yYqMee1mzw9VBx8siBS0jDk1qqsTIKJUgdjh92aprQk,687
40
+ shinestacker/gui/action_config.py,sha256=xwJfNJwYbccL9M74NObjUc4_-EBVoHN5qDdToE19rMs,19075
41
+ shinestacker/gui/action_config_dialog.py,sha256=0j6oJfNGdZ9b9-ns0k7fM_iiD9jlMmVeCEEfzO3drpw,35134
42
+ shinestacker/gui/base_form_dialog.py,sha256=M_BvjpqUWe9YuecKg0pF3vUJ-1mqF24HjKujst2j3BA,753
42
43
  shinestacker/gui/colors.py,sha256=m0pQQ-uvtIN1xmb_-N06BvC7pZYZZnq59ZSEJwutHuk,1432
43
44
  shinestacker/gui/flow_layout.py,sha256=3yBU_z7VtvHKpx1H97CHVd81eq9pe1Dcja2EZBGGKcI,3791
44
- shinestacker/gui/gui_images.py,sha256=e0KAXSPruZoRHrajfdlmOKBYoRJJQBDan1jgs7YFltY,5678
45
+ shinestacker/gui/gui_images.py,sha256=k39DpdsxcmYoRdHNNZj6OpFAas0GOHS4JSG542wfheg,5728
45
46
  shinestacker/gui/gui_logging.py,sha256=kiZcrC2AFYCWgPZo0O5SKw-E5cFrezwf4anS3HjPuNw,8168
46
- shinestacker/gui/gui_run.py,sha256=ahbl6xMFR78QrcBbEDMuaQpkxw6DBFtSX8DCMIyr_7I,15439
47
- shinestacker/gui/main_window.py,sha256=KVr3ApbQSjJgmhHnrcqTjGQNTj1LoTN2PD6bWLBjsh8,24280
48
- shinestacker/gui/menu_manager.py,sha256=_L6LOikB3impEYqilqwXc0WJuunishjz57ozZlrBn7Q,9616
49
- shinestacker/gui/new_project.py,sha256=c0y2BjnAVaf5Z88UDmuOGR5rdju0Q72ltqiE7T3QivY,10807
50
- shinestacker/gui/project_controller.py,sha256=zVMH8kcNJ75dXPjaTa0IQiavqcWxG1URlVVYWnnu1C0,15123
51
- shinestacker/gui/project_converter.py,sha256=8ko3D4D7x4hhwENxwpTeElnLtEex3lpR51nZbq30Uco,7655
52
- shinestacker/gui/project_editor.py,sha256=uouzmUkrqouQlq-dqPOgSO16r1WOnGNV2v8jTcZlRXU,23749
47
+ shinestacker/gui/gui_run.py,sha256=KZakfz8AkdagObB-0fLy9JUNau0hIreBHrjdf4ZRXYs,15440
48
+ shinestacker/gui/main_window.py,sha256=7zO1U_wGXsg7Owlre21PWwG9CMP5OcEey-aLtH4na0M,24404
49
+ shinestacker/gui/menu_manager.py,sha256=ZsND0e-vM263-6unwKUtYAtLbb4YgvIQabh5lCiT2ow,10179
50
+ shinestacker/gui/new_project.py,sha256=rlEaMTaxZ9eo5sZP5_zJx-vxPk9t8-I6X_aoYyVT2uQ,11171
51
+ shinestacker/gui/project_controller.py,sha256=9uNlt8fghS6QYyUpPyEw54Ia5RxwXLp1FaOtKxKArb8,15905
52
+ shinestacker/gui/project_converter.py,sha256=bNyC1_D_MjcTOCPlQln6CIIlX818-sw_j2omrfQIGQs,7279
53
+ shinestacker/gui/project_editor.py,sha256=mv_gJHhllAqjttueLKFnJotrtshDpCwh0TYfG6EGBnA,24965
53
54
  shinestacker/gui/project_model.py,sha256=eRUmH3QmRzDtPtZoxgT6amKzN8_5XzwjHgEJeL-_JOE,4263
54
55
  shinestacker/gui/select_path_widget.py,sha256=OfQImOmkzbvl5BBshmb7ePWrSGDJQ8VvyaAOypHAGd4,1023
55
- shinestacker/gui/tab_widget.py,sha256=6iUifK-wu0EzjVFccKHirhA2fENglVi6xREKiD96aaY,2950
56
+ shinestacker/gui/tab_widget.py,sha256=VgRmuktWXCgbXbV7c1Tho0--W5_EmmzXPfzRZgwhGfg,2965
56
57
  shinestacker/gui/time_progress_bar.py,sha256=4_5DT_EzFdVJi5bgd9TEpoTJXeU3M08CF91cZLi75Wc,3016
57
58
  shinestacker/gui/ico/focus_stack_bkg.png,sha256=Q86TgqvKEi_IzKI8m6aZB2a3T40UkDtexf2PdeBM9XE,163151
58
59
  shinestacker/gui/ico/shinestacker.icns,sha256=3IshIOv0uFexYsAEPkE9xiyuw8mB5X5gffekOUhFlt0,45278
@@ -71,7 +72,7 @@ shinestacker/retouch/brush_preview.py,sha256=QKD3pL7n7YJbIibinUFYKv7lkyq_AWLpt6o
71
72
  shinestacker/retouch/brush_tool.py,sha256=nxnEuvTioPNw1WeWsT20X1zl-LNZ8i-1ExOcihikEjk,8618
72
73
  shinestacker/retouch/denoise_filter.py,sha256=TDUHzhRKlKvCa3D5SCYCZKTpjcl81kGwmONsgSDtO1k,440
73
74
  shinestacker/retouch/display_manager.py,sha256=XPbOBmoYc_jNA791WkWkOSaFHb0ztCZechl2p2KSlwQ,9597
74
- shinestacker/retouch/exif_data.py,sha256=giqoIaMlhN6H3x8BAd73ghVHODmWIcD_QbSoDymQycU,1864
75
+ shinestacker/retouch/exif_data.py,sha256=WF40bTh0bwIqSQLMkGMCycEED06_q35-TqrBNAyaB-k,1889
75
76
  shinestacker/retouch/file_loader.py,sha256=z02-A8_uDZxayI1NFTxT2GVUvEBWStchX9hlN1o5-0U,4784
76
77
  shinestacker/retouch/filter_manager.py,sha256=SdYIZkZBUvuB6wDG0moGWav5sfEvIcB9ioUJR5wJFts,388
77
78
  shinestacker/retouch/icon_container.py,sha256=6gw1HO1bC2FrdB4dc_iH81DQuLjzuvRGksZ2hKLT9yA,585
@@ -80,14 +81,14 @@ shinestacker/retouch/image_viewer.py,sha256=3ebrLHTDtGd_EbIT2nNFRUjH836rblmmK7jZ
80
81
  shinestacker/retouch/io_gui_handler.py,sha256=pT-49uP0GROMOjZ70LoMLgXHnqSDq8ieAlAKGw0t1TM,11418
81
82
  shinestacker/retouch/io_manager.py,sha256=JUAA--AK0mVa1PTErJTnBFjaXIle5Qs7Ow0Wkd8at0o,2437
82
83
  shinestacker/retouch/layer_collection.py,sha256=Q7zoCYRn__jYkfrEC2lY1uKHWfOUbsJ27xaYHIoKVxo,5730
83
- shinestacker/retouch/shortcuts_help.py,sha256=SN4vNa_6yRAFaWxt5HpWn8FHgwmHrIs_wYwjl4iyDmg,3769
84
+ shinestacker/retouch/shortcuts_help.py,sha256=-beAkhxVia-wyuYMiAn2uQZxnUdSNadmZM77EdReoOk,3789
84
85
  shinestacker/retouch/undo_manager.py,sha256=_ekbcOLcPbQLY7t-o8wf-b1uA6OPY9rRyLM-KqMlQRo,3257
85
86
  shinestacker/retouch/unsharp_mask_filter.py,sha256=uFnth8fpZFGhdIgJCnS8x5v6lBQgJ3hX0CBke9pFXeM,3510
86
- shinestacker/retouch/vignetting_filter.py,sha256=3WuoF38lQOIaU1MWmqviItuQn8NnbMN0nwV7pM9IJqU,3453
87
+ shinestacker/retouch/vignetting_filter.py,sha256=MA97rQkSL0D-Nh-n2L4AiPR064RoTROkvza4tw84g9U,3658
87
88
  shinestacker/retouch/white_balance_filter.py,sha256=glMBYlmrF-i_OrB3sGUpjZE6X4FQdyLC4GBy2bWtaFc,6056
88
- shinestacker-1.1.0.dist-info/licenses/LICENSE,sha256=pWgb-bBdsU2Gd2kwAXxketnm5W_2u8_fIeWEgojfrxs,7651
89
- shinestacker-1.1.0.dist-info/METADATA,sha256=cg9TAx9qmIME39z02b5lLxjbtXhf_sT0aGNsfHh296E,6951
90
- shinestacker-1.1.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
91
- shinestacker-1.1.0.dist-info/entry_points.txt,sha256=SY6g1LqtMmp23q1DGwLUDT_dhLX9iss8DvWkiWLyo_4,166
92
- shinestacker-1.1.0.dist-info/top_level.txt,sha256=MhijwnBVX5psfsyX8JZjqp3SYiWPsKe69f3Gnyze4Fw,13
93
- shinestacker-1.1.0.dist-info/RECORD,,
89
+ shinestacker-1.2.1.dist-info/licenses/LICENSE,sha256=pWgb-bBdsU2Gd2kwAXxketnm5W_2u8_fIeWEgojfrxs,7651
90
+ shinestacker-1.2.1.dist-info/METADATA,sha256=6Cdeb52FCCmc0H48Ru2ydN6McvhemfdzB9Ye2bdCMhw,6951
91
+ shinestacker-1.2.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
92
+ shinestacker-1.2.1.dist-info/entry_points.txt,sha256=SY6g1LqtMmp23q1DGwLUDT_dhLX9iss8DvWkiWLyo_4,166
93
+ shinestacker-1.2.1.dist-info/top_level.txt,sha256=MhijwnBVX5psfsyX8JZjqp3SYiWPsKe69f3Gnyze4Fw,13
94
+ shinestacker-1.2.1.dist-info/RECORD,,