From 50445a0e26a02aa959dba5deca118b90a3535e7b Mon Sep 17 00:00:00 2001 From: danielmeinert <39702411+danielmeinert@users.noreply.github.com> Date: Mon, 24 Jul 2023 21:10:40 +0200 Subject: [PATCH] history for all view actions --- editor_app/app.py | 10 +++++----- editor_app/widgets.py | 29 ++++++++++++++++++++++++++++- 2 files changed, 33 insertions(+), 6 deletions(-) diff --git a/editor_app/app.py b/editor_app/app.py index 6bcf74b..fcbf947 100644 --- a/editor_app/app.py +++ b/editor_app/app.py @@ -153,7 +153,7 @@ def __init__(self, app_data_path, opening_objects = None): self.actionCopySprite.triggered.connect(self.spriteCopy) self.actionSettings.triggered.connect(lambda x: self.changeSettings(update_widgets = True)) - + self.actionBlackImport.triggered.connect(lambda x, mode=0: self.setCurrentImportColor(mode)) self.actionWhiteImport.triggered.connect(lambda x, mode=1: self.setCurrentImportColor(mode)) self.actionUpperLeftPixelImport.triggered.connect(lambda x, mode=2: self.setCurrentImportColor(mode)) @@ -161,7 +161,7 @@ def __init__(self, app_data_path, opening_objects = None): self.actionPaletteOpenRCT.triggered.connect(lambda x, palette=0: self.setCurrentPalette(palette)) self.actionPaletteOld.triggered.connect(lambda x, palette=1: self.setCurrentPalette(palette)) - + self.actionBlackBackground.triggered.connect(lambda x, mode=0: self.setCurrentBackgroundColor(mode)) self.actionWhiteBackground.triggered.connect(lambda x, mode=1: self.setCurrentBackgroundColor(mode)) self.actionCustomColorBackground.triggered.connect(lambda x, mode=2: self.setCurrentBackgroundColor(mode)) @@ -322,7 +322,7 @@ def setCurrentPalette(self, palette, update_widgets = True): tab = self.object_tabs.widget(index) tab.o.switchPalette(self.current_palette) tab.sprites_tab.updateAllViews() - + def setCurrentBackgroundColor(self, mode, update_widgets = True): if mode == 0: self.current_background_color = (0,0,0) @@ -339,14 +339,14 @@ def setCurrentBackgroundColor(self, mode, update_widgets = True): self.actionBlackBackground.setChecked(False) self.actionWhiteBackground.setChecked(False) self.actionCustomColorBackground.setChecked(True) - + if update_widgets: for index in range(self.sprite_tabs.count()): tab = self.sprite_tabs.widget(index) tab.view.setStyleSheet("QLabel{" f"background-color : rgb{self.current_background_color};" "}") - + for index in range(self.object_tabs.count()): tab = self.object_tabs.widget(index) tab.sprites_tab.sprite_view_main.setStyleSheet("QLabel{" diff --git a/editor_app/widgets.py b/editor_app/widgets.py index fa7a266..6c02a63 100644 --- a/editor_app/widgets.py +++ b/editor_app/widgets.py @@ -120,6 +120,9 @@ def setCurrentSprite(self, sprite): self.updateCurrentMainView() def colorRemapToAll(self, color_remap, selected_colors): + if self.locked: + self.locked_sprite_tab.addSpriteToHistoryAllViews() + for _, sprite in self.o.sprites.items(): for color in selected_colors: sprite.remapColor(color, color_remap) @@ -127,6 +130,10 @@ def colorRemapToAll(self, color_remap, selected_colors): self.sprites_tab.updateAllViews() def colorChangeBrightnessAll(self, step, selected_colors): + if self.locked: + self.locked_sprite_tab.addSpriteToHistoryAllViews() + + for _, sprite in self.o.sprites.items(): for color in selected_colors: sprite.changeBrightnessColor(step, color) @@ -134,6 +141,10 @@ def colorChangeBrightnessAll(self, step, selected_colors): self.sprites_tab.updateAllViews() def colorRemoveAll(self, selected_colors): + if self.locked: + self.locked_sprite_tab.addSpriteToHistoryAllViews() + + for _, sprite in self.o.sprites.items(): for color in selected_colors: sprite.removeColor(color) @@ -743,7 +754,7 @@ def __init__(self, main_window, object_tab = None, filepath = None): self.canvas_size = 200 self.lastpos = (0,0) - + self.view.setStyleSheet("QLabel{" f"background-color : rgb{self.main_window.current_background_color};" "}") @@ -1293,6 +1304,21 @@ def addSpriteToHistory(self): self.history[index].append(sprite) self.history_redo[index] = [] + def addSpriteToHistoryAllViews(self): + if not self.locked: + return + + for index, sprite_import in enumerate(self.object_tab.o.sprites.items()): + sprite = copy(sprite_import[1]) + + if len(self.history[index]) == self.main_window.settings['history_maximum']: + self.history[index].pop(0) + + + self.history[index].append(sprite) + self.history_redo[index] = [] + + def undo(self): sprite_old, index = self.giveSprite() @@ -1327,6 +1353,7 @@ def redo(self): self.updateView() def paste(self): + self.addSpriteToHistory() if self.locked: self.object_tab.sprites_tab.pasteSpriteFromClipboard() else: