shinestacker 1.5.4__py3-none-any.whl → 1.6.0__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 (35) hide show
  1. shinestacker/_version.py +1 -1
  2. shinestacker/algorithms/multilayer.py +1 -1
  3. shinestacker/algorithms/stack.py +17 -9
  4. shinestacker/app/args_parser_opts.py +4 -0
  5. shinestacker/app/gui_utils.py +10 -2
  6. shinestacker/app/main.py +5 -2
  7. shinestacker/app/project.py +4 -2
  8. shinestacker/app/retouch.py +3 -1
  9. shinestacker/app/settings_dialog.py +171 -0
  10. shinestacker/config/app_config.py +30 -0
  11. shinestacker/config/constants.py +3 -0
  12. shinestacker/config/gui_constants.py +4 -2
  13. shinestacker/config/settings.py +110 -0
  14. shinestacker/gui/action_config.py +6 -5
  15. shinestacker/gui/action_config_dialog.py +17 -74
  16. shinestacker/gui/config_dialog.py +78 -0
  17. shinestacker/gui/main_window.py +6 -6
  18. shinestacker/gui/menu_manager.py +2 -0
  19. shinestacker/gui/new_project.py +2 -1
  20. shinestacker/gui/project_controller.py +8 -6
  21. shinestacker/gui/project_model.py +16 -1
  22. shinestacker/gui/recent_file_manager.py +3 -21
  23. shinestacker/retouch/display_manager.py +47 -5
  24. shinestacker/retouch/image_editor_ui.py +14 -1
  25. shinestacker/retouch/image_view_status.py +4 -1
  26. shinestacker/retouch/sidebyside_view.py +29 -13
  27. shinestacker/retouch/transformation_manager.py +0 -1
  28. shinestacker/retouch/undo_manager.py +1 -1
  29. shinestacker/retouch/view_strategy.py +14 -4
  30. {shinestacker-1.5.4.dist-info → shinestacker-1.6.0.dist-info}/METADATA +1 -1
  31. {shinestacker-1.5.4.dist-info → shinestacker-1.6.0.dist-info}/RECORD +35 -31
  32. {shinestacker-1.5.4.dist-info → shinestacker-1.6.0.dist-info}/WHEEL +0 -0
  33. {shinestacker-1.5.4.dist-info → shinestacker-1.6.0.dist-info}/entry_points.txt +0 -0
  34. {shinestacker-1.5.4.dist-info → shinestacker-1.6.0.dist-info}/licenses/LICENSE +0 -0
  35. {shinestacker-1.5.4.dist-info → shinestacker-1.6.0.dist-info}/top_level.txt +0 -0
@@ -38,7 +38,7 @@ class UndoManager(QObject):
38
38
  return
39
39
  self.redo_stack = []
40
40
  undo_state = {
41
- 'master': layer[self.y_start:self.y_end, self.x_start:self.x_end],
41
+ 'master': layer[self.y_start:self.y_end, self.x_start:self.x_end].copy(),
42
42
  'area': (self.x_start, self.y_start, self.x_end, self.y_end),
43
43
  'description': description
44
44
  }
@@ -9,6 +9,7 @@ from PySide6.QtWidgets import (
9
9
  QGraphicsEllipseItem, QGraphicsView, QGraphicsScene, QGraphicsPixmapItem,
10
10
  QGraphicsItemGroup, QGraphicsPathItem)
11
11
  from .. config.gui_constants import gui_constants
12
+ from .. config.app_config import AppConfig
12
13
  from .layer_collection import LayerCollectionHandler
13
14
  from .brush_gradient import create_default_brush_gradient
14
15
  from .brush_preview import BrushPreviewItem
@@ -121,6 +122,7 @@ class ViewStrategy(LayerCollectionHandler):
121
122
  self.last_mouse_pos = None
122
123
  self.last_update_time = QTime.currentTime()
123
124
  self.last_color_update_time = 0
125
+ self.last_cursor_update_time = 0
124
126
 
125
127
  @abstractmethod
126
128
  def create_pixmaps(self):
@@ -245,6 +247,8 @@ class ViewStrategy(LayerCollectionHandler):
245
247
 
246
248
  def set_cursor_style(self, style):
247
249
  self.cursor_style = style
250
+ if style != 'simple' and self.brush_cursor:
251
+ self.brush_cursor.setBrush(Qt.NoBrush)
248
252
  if style == 'preview':
249
253
  self.show_brush_preview()
250
254
  self.update_brush_cursor()
@@ -283,7 +287,7 @@ class ViewStrategy(LayerCollectionHandler):
283
287
  self.update_view_display(
284
288
  self.current_layer(),
285
289
  self.get_current_pixmap(),
286
- self.get_current_view(),
290
+ self.get_current_scene(),
287
291
  self.get_current_view())
288
292
 
289
293
  def update_cursor_pen_width(self):
@@ -697,15 +701,21 @@ class ViewStrategy(LayerCollectionHandler):
697
701
  def mouse_move_event(self, event):
698
702
  if self.empty():
699
703
  return
704
+ current_time = time.time() * 1000 # ms
705
+ cursor_update_interval = AppConfig.get('cursor_update_time')
706
+ if current_time - self.last_cursor_update_time < cursor_update_interval:
707
+ return
708
+ self.last_cursor_update_time = current_time
700
709
  position = event.position()
701
710
  brush_size = self.brush.size
702
711
  if not self.space_pressed:
703
712
  self.update_brush_cursor()
704
713
  if self.dragging and event.buttons() & Qt.LeftButton:
705
714
  current_time = QTime.currentTime()
706
- if self.last_update_time.msecsTo(current_time) >= gui_constants.PAINT_REFRESH_TIMER:
707
- min_step = brush_size * \
708
- gui_constants.MIN_MOUSE_STEP_BRUSH_FRACTION * self.zoom_factor()
715
+ paint_refresh_time = AppConfig.get('paint_refresh_time')
716
+ if self.last_update_time.msecsTo(current_time) >= paint_refresh_time:
717
+ min_step = AppConfig.get('min_mouse_step_brush_fraction')
718
+ min_step = brush_size * min_step * self.zoom_factor()
709
719
  x, y = position.x(), position.y()
710
720
  xp, yp = self.last_brush_pos.x(), self.last_brush_pos.y()
711
721
  distance = math.sqrt((x - xp)**2 + (y - yp)**2)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: shinestacker
3
- Version: 1.5.4
3
+ Version: 1.6.0
4
4
  Summary: ShineStacker
5
5
  Author-email: Luca Lista <luka.lista@gmail.com>
6
6
  License-Expression: LGPL-3.0
@@ -1,5 +1,5 @@
1
1
  shinestacker/__init__.py,sha256=uq2fjAw2z_6TpH3mOcWFZ98GoEPRsNhTAK8N0MMm_e8,448
2
- shinestacker/_version.py,sha256=HfPNw49U2WWQOQlRuPSUUE8x8nkPx62dtjaGJfbhyTk,21
2
+ shinestacker/_version.py,sha256=aWnRnF5TUBHC_2RdGczq36VyxBiPAviva2RjtMVjCFg,21
3
3
  shinestacker/algorithms/__init__.py,sha256=1FwVJ3w9GGbFFkjYJRUedTvcdE4j0ieSgaH9RC9iCY4,877
4
4
  shinestacker/algorithms/align.py,sha256=mb44u-YxZI1TTSHz81nRpX_2c8awlOhnGrK0LyfTQeQ,33543
5
5
  shinestacker/algorithms/align_auto.py,sha256=pJetw6zZEWQLouzcelkI8gD4cPiOp887ePXzVbm0E6Q,3800
@@ -9,30 +9,33 @@ shinestacker/algorithms/base_stack_algo.py,sha256=RzxvLDHqxqhnAl83u2onjvfsRea1qG
9
9
  shinestacker/algorithms/denoise.py,sha256=GL3Z4_6MHxSa7Wo4ZzQECZS87tHBFqO0sIVF_jPuYQU,426
10
10
  shinestacker/algorithms/depth_map.py,sha256=nRBrZQWbdUqFOtYMEQx9UNdnybrBTeAOr1eV91FlN8U,5611
11
11
  shinestacker/algorithms/exif.py,sha256=SM4ZDDe8hCJ3xY6053FNndOiwzEStzdp0WrXurlcHVc,9429
12
- shinestacker/algorithms/multilayer.py,sha256=WlB4L5oY9qra3w7Qahg-tqO6S_s3pMB_LmGR8PPR_7w,9904
12
+ shinestacker/algorithms/multilayer.py,sha256=EEMDr2NlCU9DCFO5ykbBrY-2q9oBUD0-ctm7x0IXU5U,9911
13
13
  shinestacker/algorithms/noise_detection.py,sha256=myUiLKYC3Ph62j28upUd_7rZum_JpqyxiN33nZN35zE,9346
14
14
  shinestacker/algorithms/pyramid.py,sha256=Z7tlp8Hh3ploAXJCr0VNe33d8H9GNrlqHXq_LapgRwo,8205
15
15
  shinestacker/algorithms/pyramid_auto.py,sha256=fl_jXNYLWsBiX0M0UghzCLqai0SGXlmKYHU7Z9SUYSo,6173
16
16
  shinestacker/algorithms/pyramid_tiles.py,sha256=ZBWIeifkDOIVFF4SCyspRZHSj6K_1P3dk4WLmuo53RU,12213
17
17
  shinestacker/algorithms/sharpen.py,sha256=h7PMJBYxucg194Usp_6pvItPUMFYbT-ebAc_-7XBFUw,949
18
- shinestacker/algorithms/stack.py,sha256=V9YX0CbNWrgAo7_uti64rmmuwU6RsRcjDoBpsES4aSE,5137
18
+ shinestacker/algorithms/stack.py,sha256=p9bLCbMjDMm7rX_FRfgXRTEJAj3GhNPOCvwePE9hVmc,5549
19
19
  shinestacker/algorithms/stack_framework.py,sha256=OMrjD5dKquHQXhM7TfLRExDsqN1n938WWhGAfkPYLZM,13883
20
20
  shinestacker/algorithms/utils.py,sha256=l6GJpEXpzDr_ml9Not03a1_F7wYvPwn8JkEWDuNwL9o,12116
21
21
  shinestacker/algorithms/vignetting.py,sha256=gJOv-FN3GnTgaVn70W_6d-qbw3WmqinDiO9oL053cus,10351
22
22
  shinestacker/algorithms/white_balance.py,sha256=PMKsBtxOSn5aRr_Gkx1StHS4eN6kBN2EhNnhg4UG24g,501
23
23
  shinestacker/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
24
24
  shinestacker/app/about_dialog.py,sha256=pkH7nnxUP8yc0D3vRGd1jRb5cwi1nDVbQRk_OC9yLk8,4144
25
- shinestacker/app/args_parser_opts.py,sha256=TlfMR5GBd6Zz9wZNrN7CGJ1_hm1FnLZn5EoP5mkRHrk,776
26
- shinestacker/app/gui_utils.py,sha256=fSpkwPXTON_l676UHdAnJNrGq7BPbSlPOiHpOF_LZaI,2519
25
+ shinestacker/app/args_parser_opts.py,sha256=c6IUXOI0SJIFckPWPXYnwmBmdNnOcrtvU5S8hUDU_AQ,979
26
+ shinestacker/app/gui_utils.py,sha256=EGZejp0XZXRLVa_Wd_2VYAwK3oe9hMSoZzNgT7NUNRw,2986
27
27
  shinestacker/app/help_menu.py,sha256=g8lKG_xZmXtNQaC3SIRzyROKVWva_PLEgZsQWh6zUcQ,499
28
- shinestacker/app/main.py,sha256=UkWz4jvaBPH4Fs-arHe8H0NqKVTA4B_1e9BRn9S5oFo,10963
28
+ shinestacker/app/main.py,sha256=l9O9J7nICTi3wnW2uJpKfLV7HWDEi-r_xoOrbywJv_s,11129
29
29
  shinestacker/app/open_frames.py,sha256=bsu32iJSYJQLe_tQQbvAU5DuMDVX6MRuNdE7B5lojZc,1488
30
- shinestacker/app/project.py,sha256=_kopeyb8e5JAA3XjNXoCshlYBfT5Avw-kTqiJN4GVlo,2805
31
- shinestacker/app/retouch.py,sha256=On2oV2QonfMziQAvRkO6qw-h6E6wWQE0svKzZQKHeyg,2687
30
+ shinestacker/app/project.py,sha256=8hjKkZqBsumS7McHXRZdGvyHgopPHeHznrnIdXajp_w,2916
31
+ shinestacker/app/retouch.py,sha256=pks7aoXmYyRoeTzOA-D2Uy5f4RKoEDh25OQtkcOE_9c,2778
32
+ shinestacker/app/settings_dialog.py,sha256=0P3nqqZEiTIFgidW1_e3Q_zE7NbAouNsuj-yNsU41vk,8192
32
33
  shinestacker/config/__init__.py,sha256=aXxi-LmAvXd0daIFrVnTHE5OCaYeK1uf1BKMr7oaXQs,197
34
+ shinestacker/config/app_config.py,sha256=rM1Rndk1GDa5c0AhcVNEN9zSAzxPZixzQYfjODbJUwE,771
33
35
  shinestacker/config/config.py,sha256=eBko2D3ADhLTIm9X6hB_a_WsIjwgfE-qmBVkhP1XSvc,1636
34
- shinestacker/config/constants.py,sha256=EEdr7pZg4JpbIjUWaP7kJQfTuBB85FN739myDNAfn8A,8301
35
- shinestacker/config/gui_constants.py,sha256=55Qr0KzrTx8eQHCkT-EVabSiD59VvLZIh5o2cA9028s,2791
36
+ shinestacker/config/constants.py,sha256=Z7QjaklrYYsPjTX68Tjyh_wCOuYyQPBR8dnYrZfNwA8,8376
37
+ shinestacker/config/gui_constants.py,sha256=PNxzwmVEppJ2mV_vwp68NhWzJOEitVy1Pk9SwSmRsho,2882
38
+ shinestacker/config/settings.py,sha256=4p4r6wKOCbttzfH9tyHQSTd-iv-GfgCd1LxI3C7WIjU,3861
36
39
  shinestacker/core/__init__.py,sha256=IUEIx6SQ3DygDEHN3_E6uKpHjHtUa4a_U_1dLd_8yEU,484
37
40
  shinestacker/core/colors.py,sha256=kr_tJA1iRsdck2JaYDb2lS-codZ4Ty9gdu3kHfiWvuM,1340
38
41
  shinestacker/core/core_utils.py,sha256=1LYj19Dfc9jZN9-4dlf1paximDH5WZYa7DXvKr7R7QY,1719
@@ -40,23 +43,24 @@ shinestacker/core/exceptions.py,sha256=2-noG-ORAGdvDhL8jBQFs0xxZS4fI6UIkMqrWekgk
40
43
  shinestacker/core/framework.py,sha256=QaTfnzEUHwzlbyFG7KzeyteckTSWHWEEJE4d5Tc8H18,11015
41
44
  shinestacker/core/logging.py,sha256=9SuSSy9Usbh7zqmLYMqkmy-VBkOJW000lwqAR0XQs30,3067
42
45
  shinestacker/gui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
43
- shinestacker/gui/action_config.py,sha256=HeDbRy3YSl9IldLZBCdXj7eWIfTTHmUqC_AW9LJU2Pk,25859
44
- shinestacker/gui/action_config_dialog.py,sha256=Jp0LVhE0gdz70ve47LCL5N2sSLuj8_arZb4xL50_pkk,41101
46
+ shinestacker/gui/action_config.py,sha256=Xv7SGbhPl1F_dUnU04VBt_E-wIItnN_q6QuhU_d9GfI,25929
47
+ shinestacker/gui/action_config_dialog.py,sha256=QN95FiVPYL6uin2sYO5F7tq6G5rBWh9yRkeTVvwKrwU,38341
45
48
  shinestacker/gui/base_form_dialog.py,sha256=KAUQNtmJazttmOIe4E4pFifbtvcByTAhtCmcIYeA4UE,766
46
49
  shinestacker/gui/colors.py,sha256=-HaFprDuzRSKjXoZfX1rdOuvawQAkazqdgLBEiZcFII,1476
50
+ shinestacker/gui/config_dialog.py,sha256=yt3nvh0HPHQuCn3AFlzlIHUJnnxcz-Rrw3W3jS9ZYiE,3447
47
51
  shinestacker/gui/flow_layout.py,sha256=3yBU_z7VtvHKpx1H97CHVd81eq9pe1Dcja2EZBGGKcI,3791
48
52
  shinestacker/gui/folder_file_selection.py,sha256=IYWfZQFkoD5iO7zJ7BxVVDP9F3Dc0EXLILAhL4q-Cb8,4117
49
53
  shinestacker/gui/gui_images.py,sha256=k39DpdsxcmYoRdHNNZj6OpFAas0GOHS4JSG542wfheg,5728
50
54
  shinestacker/gui/gui_logging.py,sha256=kiZcrC2AFYCWgPZo0O5SKw-E5cFrezwf4anS3HjPuNw,8168
51
55
  shinestacker/gui/gui_run.py,sha256=zr7x4BVmM0n_ZRsSEaJVVKvHSWHuwhftgkUvgeg90gU,15767
52
- shinestacker/gui/main_window.py,sha256=zOxIRn6urmnmfDOR1JJ3n6xsT1qryOt1s7kZxwh-qYI,25202
53
- shinestacker/gui/menu_manager.py,sha256=legmYEpQxuzEQoDhxMUWiwCcYTXwd-uRfAju-Nymy8g,11664
54
- shinestacker/gui/new_project.py,sha256=z8e3EhRMB-KtoPwYQSiKLSOQ2dS0-Okm7zVw21B7zy8,16391
55
- shinestacker/gui/project_controller.py,sha256=7vSyoxepplJrf0VsbPrZkMqtHW6rtPgEOZgdPsOPVoQ,16490
56
+ shinestacker/gui/main_window.py,sha256=0G-ZjSVKY_rCK_DmstRn3wxOdvS5i3Ba3FBR2ijxpe0,25220
57
+ shinestacker/gui/menu_manager.py,sha256=q4m3cBSxUR68gexpwfIROVRKJ86zp-XPZVrohh1PfQU,11786
58
+ shinestacker/gui/new_project.py,sha256=XMv1ttYrkuqaN9629anXtVSn1bxosgyJpxSFPjlVryU,16437
59
+ shinestacker/gui/project_controller.py,sha256=MYv8QJNXUdc7r1K5D6LnBbds9YalCKSAo_CaO6b0TO8,16636
56
60
  shinestacker/gui/project_converter.py,sha256=Gmna0HwbvACcXiX74TaQYumif8ZV8sZ2APLTMM-L1mU,7436
57
61
  shinestacker/gui/project_editor.py,sha256=lSgQ42IoaobHs-NQQWT88Qhg5l7nu5ejxAO5VgIupr8,25498
58
- shinestacker/gui/project_model.py,sha256=eRUmH3QmRzDtPtZoxgT6amKzN8_5XzwjHgEJeL-_JOE,4263
59
- shinestacker/gui/recent_file_manager.py,sha256=FtatDGUqwmXXchepZdA0YRNzqCRS9Qp4EL9R9Wsg5qE,3731
62
+ shinestacker/gui/project_model.py,sha256=9dId8N-np4YHDpz_wO20Mvd06np3YKlej-0TMWaA_WE,4833
63
+ shinestacker/gui/recent_file_manager.py,sha256=010bciuirKLiVCfOAKs0uFlB3iUjHNBlPX_9K2vH5j0,2916
60
64
  shinestacker/gui/select_path_widget.py,sha256=HSwgSr702w5Et4c-6nkRXnIpm1KFqKJetAF5xQNa5zI,1017
61
65
  shinestacker/gui/sys_mon.py,sha256=zU41YYVeqQ1-v6oGIh2_BFzQWq87keN-398Wdm59-Nk,3526
62
66
  shinestacker/gui/tab_widget.py,sha256=VgRmuktWXCgbXbV7c1Tho0--W5_EmmzXPfzRZgwhGfg,2965
@@ -77,29 +81,29 @@ shinestacker/retouch/brush_gradient.py,sha256=F5SFhyzl8YTMqjJU3jK8BrIlLCYLUvITd5
77
81
  shinestacker/retouch/brush_preview.py,sha256=cOFVMCbEsgR_alzmr_-LLghtGU_unrE-hAjLHcvrZAY,5484
78
82
  shinestacker/retouch/brush_tool.py,sha256=8uVncTA375uC3Nhp2YM0eZjpOR-nN47i2eGjN8tJzOU,8714
79
83
  shinestacker/retouch/denoise_filter.py,sha256=UpNKbFs7uArdglEej8AUHan7oCVYV5E7HNzkovj7XMQ,571
80
- shinestacker/retouch/display_manager.py,sha256=vRmaSfHP47rYQrqvJ3flx_GgMJnMZDfQO4PXTfKcpqE,8505
84
+ shinestacker/retouch/display_manager.py,sha256=iRPcXWb3h3OVJy-S4xny--SB-rUfU4Qc4YSVu3XstWE,10236
81
85
  shinestacker/retouch/exif_data.py,sha256=LF-fRXW-reMq-xJ_QRE5j8DC2LVGKIlC6MR3QbC1cdg,1896
82
86
  shinestacker/retouch/file_loader.py,sha256=z02-A8_uDZxayI1NFTxT2GVUvEBWStchX9hlN1o5-0U,4784
83
87
  shinestacker/retouch/filter_manager.py,sha256=tOGIWj5HjViL1-iXHkd91X-sZ1c1G531pDmLO0x6zx0,866
84
88
  shinestacker/retouch/icon_container.py,sha256=6gw1HO1bC2FrdB4dc_iH81DQuLjzuvRGksZ2hKLT9yA,585
85
- shinestacker/retouch/image_editor_ui.py,sha256=-UVWeFSnXyHOG7XEIl9wNhiCjH5R0UFeM2VOg5R6ozs,33435
86
- shinestacker/retouch/image_view_status.py,sha256=bdIhsXiYXm7eyjkTGWkw5PRShzaF_by-g7daqgmhwjM,1858
89
+ shinestacker/retouch/image_editor_ui.py,sha256=vPfLuHdRZTGNbmX3ZXYoJ9Q2_dCDbFJHUxB41hrOD6k,34117
90
+ shinestacker/retouch/image_view_status.py,sha256=2rWi2ugdyjMhWCtRJkwOnb7-tCtVfnGfCY_54qpZhwM,1970
87
91
  shinestacker/retouch/image_viewer.py,sha256=H8w-ORug1aKf7X3FeSX4lQV-a0IewZ9OVG1-50BK4cE,4452
88
92
  shinestacker/retouch/io_gui_handler.py,sha256=UOnrFT00s0075Ng_yJACJX9TP8UT9mQOWXwQwNAfpMw,12079
89
93
  shinestacker/retouch/io_manager.py,sha256=JUAA--AK0mVa1PTErJTnBFjaXIle5Qs7Ow0Wkd8at0o,2437
90
94
  shinestacker/retouch/layer_collection.py,sha256=fZlGrkm9-Ycc7AOzFSpImhafiTieBeCZRk-UlvlFHbo,5819
91
95
  shinestacker/retouch/overlaid_view.py,sha256=KBwuzC2OQsK7rdtFAKrSvXrHrEV1SiOoZhxPCQLGkvg,6734
92
96
  shinestacker/retouch/shortcuts_help.py,sha256=BFWTT5QvodqMhqa_9LI25hZqjICfckgyWG4fGrGzvnM,4283
93
- shinestacker/retouch/sidebyside_view.py,sha256=Ipx5ckaAuEv6fnxg4RpENj00ew6-M2jLsnTKUcYKcAk,18055
94
- shinestacker/retouch/transformation_manager.py,sha256=NSHGUF-JFv4Y81gSvizjQCTp49TLo1so7c0WoUElO08,1812
95
- shinestacker/retouch/undo_manager.py,sha256=cKUkqnJtnJ-Hq-LQs5Bv49FC6qkG6XSw9oCVySJ8jS0,4312
97
+ shinestacker/retouch/sidebyside_view.py,sha256=iwnIENV_YrR2fogXqKNdCcAQBROWkQxOnh8G4tU5bqA,18829
98
+ shinestacker/retouch/transformation_manager.py,sha256=T2ewDsEKn1FBxapQ1kR7KqFwrF7spUu-KZ43bKpfBo8,1761
99
+ shinestacker/retouch/undo_manager.py,sha256=_qTpwjGsznc-Sz-sfWEDv3IxJNmrYU0qi7yJelg58DU,4319
96
100
  shinestacker/retouch/unsharp_mask_filter.py,sha256=Iapc8UmSVpj3V0LcJq_38P5qerRqTevMynbbk5Rk6iE,3634
97
- shinestacker/retouch/view_strategy.py,sha256=u9oOB-fxap_ijNJ3O3Ev5OMLH-bDZNGj4hyBkJUDeeo,27993
101
+ shinestacker/retouch/view_strategy.py,sha256=l_Fuh6vmTLv7S400XAP1fDO61Dv7U8GaOrNTvjKKjvc,28521
98
102
  shinestacker/retouch/vignetting_filter.py,sha256=JhFr6OVIripQzSJrZEG4lxq7wBsmpofLqJQ-aP2bKw8,3789
99
103
  shinestacker/retouch/white_balance_filter.py,sha256=UaH4yxG3fU4vPutBAkV5oTXIQyUTN09x0uTywAzv3sY,8286
100
- shinestacker-1.5.4.dist-info/licenses/LICENSE,sha256=pWgb-bBdsU2Gd2kwAXxketnm5W_2u8_fIeWEgojfrxs,7651
101
- shinestacker-1.5.4.dist-info/METADATA,sha256=1cFUICQsSTKF1T8L7sNiT7XQ_UkwXlIMRr64bym9TvA,6978
102
- shinestacker-1.5.4.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
103
- shinestacker-1.5.4.dist-info/entry_points.txt,sha256=SY6g1LqtMmp23q1DGwLUDT_dhLX9iss8DvWkiWLyo_4,166
104
- shinestacker-1.5.4.dist-info/top_level.txt,sha256=MhijwnBVX5psfsyX8JZjqp3SYiWPsKe69f3Gnyze4Fw,13
105
- shinestacker-1.5.4.dist-info/RECORD,,
104
+ shinestacker-1.6.0.dist-info/licenses/LICENSE,sha256=pWgb-bBdsU2Gd2kwAXxketnm5W_2u8_fIeWEgojfrxs,7651
105
+ shinestacker-1.6.0.dist-info/METADATA,sha256=0sCC4ubrLH2wabRFJaCx9_Kaj3K4HDIdM6vULEj2iJA,6978
106
+ shinestacker-1.6.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
107
+ shinestacker-1.6.0.dist-info/entry_points.txt,sha256=SY6g1LqtMmp23q1DGwLUDT_dhLX9iss8DvWkiWLyo_4,166
108
+ shinestacker-1.6.0.dist-info/top_level.txt,sha256=MhijwnBVX5psfsyX8JZjqp3SYiWPsKe69f3Gnyze4Fw,13
109
+ shinestacker-1.6.0.dist-info/RECORD,,