mirror of
https://github.com/Orama-Interactive/Pixelorama.git
synced 2025-01-31 07:29:49 +00:00
Just one method for undo/redo in Global.gd
This commit is contained in:
parent
f70efe3076
commit
67ec887ad1
|
@ -450,8 +450,8 @@ func general_undo_scale() -> void:
|
|||
project.undo_redo.add_undo_property(
|
||||
project.y_symmetry_axis, "points", project.y_symmetry_axis.points
|
||||
)
|
||||
project.undo_redo.add_undo_method(Global, "undo")
|
||||
project.undo_redo.add_do_method(Global, "redo")
|
||||
project.undo_redo.add_undo_method(Global, "undo_or_redo", true)
|
||||
project.undo_redo.add_do_method(Global, "undo_or_redo", false)
|
||||
project.undo_redo.commit_action()
|
||||
|
||||
|
||||
|
@ -463,8 +463,8 @@ func general_do_centralize() -> void:
|
|||
|
||||
func general_undo_centralize() -> void:
|
||||
var project: Project = Global.current_project
|
||||
project.undo_redo.add_undo_method(Global, "undo")
|
||||
project.undo_redo.add_do_method(Global, "redo")
|
||||
project.undo_redo.add_undo_method(Global, "undo_or_redo", true)
|
||||
project.undo_redo.add_do_method(Global, "undo_or_redo", false)
|
||||
project.undo_redo.commit_action()
|
||||
|
||||
|
||||
|
|
|
@ -220,22 +220,30 @@ func general_redo(project: Project = current_project) -> void:
|
|||
notification_label("Redo: %s" % action_name)
|
||||
|
||||
|
||||
func undo(_frame_index := -1, _layer_index := -1, project: Project = current_project) -> void:
|
||||
general_undo(project)
|
||||
func undo_or_redo(
|
||||
undo: bool, frame_index := -1, layer_index := -1, project: Project = current_project
|
||||
) -> void:
|
||||
if undo:
|
||||
general_undo(project)
|
||||
else:
|
||||
general_redo(project)
|
||||
var action_name: String = project.undo_redo.get_current_action_name()
|
||||
if (
|
||||
action_name == "Draw"
|
||||
or action_name == "Draw Shape"
|
||||
or action_name == "Rectangle Select"
|
||||
or action_name == "Move Selection"
|
||||
or action_name == "Scale"
|
||||
or action_name == "Centralize"
|
||||
or action_name == "Merge Layer"
|
||||
or action_name == "Link Cel"
|
||||
or action_name == "Unlink Cel"
|
||||
action_name
|
||||
in [
|
||||
"Draw",
|
||||
"Draw Shape",
|
||||
"Rectangle Select",
|
||||
"Move Selection",
|
||||
"Scale",
|
||||
"Centralize",
|
||||
"Merge Layer",
|
||||
"Link Cel",
|
||||
"Unlink Cel"
|
||||
]
|
||||
):
|
||||
if _layer_index > -1 and _frame_index > -1:
|
||||
canvas.update_texture(_layer_index, _frame_index, project)
|
||||
if layer_index > -1 and frame_index > -1:
|
||||
canvas.update_texture(layer_index, frame_index, project)
|
||||
else:
|
||||
for i in project.frames.size():
|
||||
for j in project.layers.size():
|
||||
|
@ -250,51 +258,7 @@ func undo(_frame_index := -1, _layer_index := -1, project: Project = current_pro
|
|||
|
||||
elif "Frame" in action_name:
|
||||
# This actually means that frames.size is one, but it hasn't been updated yet
|
||||
if project.frames.size() == 2: # Stop animating
|
||||
play_forward.pressed = false
|
||||
play_backwards.pressed = false
|
||||
animation_timer.stop()
|
||||
|
||||
elif "Move Cels" == action_name:
|
||||
project.frames = project.frames # to call frames_changed
|
||||
|
||||
canvas.update()
|
||||
if !project.has_changed:
|
||||
project.has_changed = true
|
||||
if project == current_project:
|
||||
self.window_title = window_title + "(*)"
|
||||
|
||||
|
||||
func redo(_frame_index := -1, _layer_index := -1, project: Project = current_project) -> void:
|
||||
general_redo(project)
|
||||
var action_name: String = project.undo_redo.get_current_action_name()
|
||||
if (
|
||||
action_name == "Draw"
|
||||
or action_name == "Draw Shape"
|
||||
or action_name == "Rectangle Select"
|
||||
or action_name == "Move Selection"
|
||||
or action_name == "Scale"
|
||||
or action_name == "Centralize"
|
||||
or action_name == "Merge Layer"
|
||||
or action_name == "Link Cel"
|
||||
or action_name == "Unlink Cel"
|
||||
):
|
||||
if _layer_index > -1 and _frame_index > -1:
|
||||
canvas.update_texture(_layer_index, _frame_index, project)
|
||||
else:
|
||||
for i in project.frames.size():
|
||||
for j in project.layers.size():
|
||||
canvas.update_texture(j, i, project)
|
||||
|
||||
canvas.selection.update()
|
||||
if action_name == "Scale":
|
||||
canvas.camera_zoom()
|
||||
canvas.grid.update()
|
||||
canvas.pixel_grid.update()
|
||||
cursor_position_label.text = "[%s×%s]" % [project.size.x, project.size.y]
|
||||
|
||||
elif "Frame" in action_name:
|
||||
if project.frames.size() == 1: # Stop animating
|
||||
if (undo and project.frames.size() == 2) or project.frames.size() == 1: # Stop animating
|
||||
play_forward.pressed = false
|
||||
play_backwards.pressed = false
|
||||
animation_timer.stop()
|
||||
|
|
|
@ -476,8 +476,8 @@ func open_image_at_frame(image: Image, layer_index := 0, frame_index := 0) -> vo
|
|||
project.undo_redo.add_undo_property(project, "frames", project.frames)
|
||||
project.undo_redo.add_undo_property(project, "current_frame", project.current_frame)
|
||||
|
||||
project.undo_redo.add_do_method(Global, "redo")
|
||||
project.undo_redo.add_undo_method(Global, "undo")
|
||||
project.undo_redo.add_do_method(Global, "undo_or_redo", false)
|
||||
project.undo_redo.add_undo_method(Global, "undo_or_redo", true)
|
||||
project.undo_redo.commit_action()
|
||||
|
||||
|
||||
|
@ -500,8 +500,8 @@ func open_image_as_new_frame(image: Image, layer_index := 0) -> void:
|
|||
|
||||
project.undos += 1
|
||||
project.undo_redo.create_action("Add Frame")
|
||||
project.undo_redo.add_do_method(Global, "redo")
|
||||
project.undo_redo.add_undo_method(Global, "undo")
|
||||
project.undo_redo.add_do_method(Global, "undo_or_redo", false)
|
||||
project.undo_redo.add_undo_method(Global, "undo_or_redo", true)
|
||||
|
||||
project.undo_redo.add_do_property(project, "frames", new_frames)
|
||||
project.undo_redo.add_do_property(project, "current_frame", new_frames.size() - 1)
|
||||
|
@ -544,8 +544,8 @@ func open_image_as_new_layer(image: Image, file_name: String, frame_index := 0)
|
|||
project.undo_redo.add_undo_property(project, "layers", project.layers)
|
||||
project.undo_redo.add_undo_property(project, "current_frame", project.current_frame)
|
||||
|
||||
project.undo_redo.add_undo_method(Global, "undo")
|
||||
project.undo_redo.add_do_method(Global, "redo")
|
||||
project.undo_redo.add_undo_method(Global, "undo_or_redo", true)
|
||||
project.undo_redo.add_do_method(Global, "undo_or_redo", false)
|
||||
project.undo_redo.commit_action()
|
||||
|
||||
|
||||
|
|
|
@ -100,8 +100,8 @@ func _commit_undo(action: String, undo_data: Dictionary, project: Project) -> vo
|
|||
project.undo_redo.add_do_property(image, "data", redo_data[image])
|
||||
for image in undo_data:
|
||||
project.undo_redo.add_undo_property(image, "data", undo_data[image])
|
||||
project.undo_redo.add_do_method(Global, "redo", -1, -1, project)
|
||||
project.undo_redo.add_undo_method(Global, "undo", -1, -1, project)
|
||||
project.undo_redo.add_do_method(Global, "undo_or_redo", false, -1, -1, project)
|
||||
project.undo_redo.add_undo_method(Global, "undo_or_redo", true, -1, -1, project)
|
||||
project.undo_redo.commit_action()
|
||||
|
||||
|
||||
|
|
|
@ -257,8 +257,8 @@ func commit_undo(action: String, undo_data: Dictionary) -> void:
|
|||
image.unlock()
|
||||
for image in undo_data:
|
||||
project.undo_redo.add_undo_property(image, "data", undo_data[image])
|
||||
project.undo_redo.add_do_method(Global, "redo", frame, layer)
|
||||
project.undo_redo.add_undo_method(Global, "undo", frame, layer)
|
||||
project.undo_redo.add_do_method(Global, "undo_or_redo", false, frame, layer)
|
||||
project.undo_redo.add_undo_method(Global, "undo_or_redo", true, frame, layer)
|
||||
project.undo_redo.commit_action()
|
||||
|
||||
|
||||
|
|
|
@ -166,8 +166,8 @@ func commit_undo(action: String) -> void:
|
|||
image.unlock()
|
||||
for image in _undo_data:
|
||||
project.undo_redo.add_undo_property(image, "data", _undo_data[image])
|
||||
project.undo_redo.add_do_method(Global, "redo", frame, layer)
|
||||
project.undo_redo.add_undo_method(Global, "undo", frame, layer)
|
||||
project.undo_redo.add_do_method(Global, "undo_or_redo", false, frame, layer)
|
||||
project.undo_redo.add_undo_method(Global, "undo_or_redo", true, frame, layer)
|
||||
project.undo_redo.commit_action()
|
||||
|
||||
_undo_data.clear()
|
||||
|
|
|
@ -118,8 +118,8 @@ func commit_undo(action: String) -> void:
|
|||
image.unlock()
|
||||
for image in _undo_data:
|
||||
project.undo_redo.add_undo_property(image, "data", _undo_data[image])
|
||||
project.undo_redo.add_do_method(Global, "redo", frame, layer)
|
||||
project.undo_redo.add_undo_method(Global, "undo", frame, layer)
|
||||
project.undo_redo.add_do_method(Global, "undo_or_redo", false, frame, layer)
|
||||
project.undo_redo.add_undo_method(Global, "undo_or_redo", true, frame, layer)
|
||||
project.undo_redo.commit_action()
|
||||
|
||||
_undo_data.clear()
|
||||
|
|
|
@ -600,9 +600,9 @@ func commit_undo(action: String, undo_data_tmp: Dictionary) -> void:
|
|||
if not image is Image:
|
||||
continue
|
||||
project.undo_redo.add_undo_property(image, "data", undo_data_tmp[image])
|
||||
project.undo_redo.add_do_method(Global, "redo")
|
||||
project.undo_redo.add_do_method(Global, "undo_or_redo", false)
|
||||
project.undo_redo.add_do_method(project, "selection_bitmap_changed")
|
||||
project.undo_redo.add_undo_method(Global, "undo")
|
||||
project.undo_redo.add_undo_method(Global, "undo_or_redo", true)
|
||||
project.undo_redo.add_undo_method(project, "selection_bitmap_changed")
|
||||
project.undo_redo.commit_action()
|
||||
|
||||
|
|
|
@ -75,9 +75,9 @@ func _commit_undo(action: String, undo_data: Dictionary, project: Project) -> vo
|
|||
if not image is Image:
|
||||
continue
|
||||
project.undo_redo.add_undo_property(image, "data", undo_data[image])
|
||||
project.undo_redo.add_do_method(Global, "redo", -1, -1, project)
|
||||
project.undo_redo.add_do_method(Global, "undo_or_redo", false, -1, -1, project)
|
||||
project.undo_redo.add_do_method(project, "selection_bitmap_changed")
|
||||
project.undo_redo.add_undo_method(Global, "undo", -1, -1, project)
|
||||
project.undo_redo.add_undo_method(Global, "undo_or_redo", true, -1, -1, project)
|
||||
project.undo_redo.add_undo_method(project, "selection_bitmap_changed")
|
||||
project.undo_redo.commit_action()
|
||||
|
||||
|
|
|
@ -106,8 +106,8 @@ func add_frame() -> void:
|
|||
|
||||
project.undos += 1
|
||||
project.undo_redo.create_action("Add Frame")
|
||||
project.undo_redo.add_do_method(Global, "redo")
|
||||
project.undo_redo.add_undo_method(Global, "undo")
|
||||
project.undo_redo.add_do_method(Global, "undo_or_redo", false)
|
||||
project.undo_redo.add_undo_method(Global, "undo_or_redo", true)
|
||||
|
||||
project.undo_redo.add_do_property(project, "frames", new_frames)
|
||||
project.undo_redo.add_do_property(project, "current_frame", project.current_frame + 1)
|
||||
|
@ -205,8 +205,8 @@ func delete_frame(frame := -1) -> void:
|
|||
Global.current_project, "layers", Global.current_project.layers
|
||||
)
|
||||
|
||||
Global.current_project.undo_redo.add_do_method(Global, "redo")
|
||||
Global.current_project.undo_redo.add_undo_method(Global, "undo")
|
||||
Global.current_project.undo_redo.add_do_method(Global, "undo_or_redo", false)
|
||||
Global.current_project.undo_redo.add_undo_method(Global, "undo_or_redo", true)
|
||||
Global.current_project.undo_redo.commit_action()
|
||||
|
||||
|
||||
|
@ -268,8 +268,8 @@ func copy_frame(frame := -1) -> void:
|
|||
|
||||
Global.current_project.undos += 1
|
||||
Global.current_project.undo_redo.create_action("Add Frame")
|
||||
Global.current_project.undo_redo.add_do_method(Global, "redo")
|
||||
Global.current_project.undo_redo.add_undo_method(Global, "undo")
|
||||
Global.current_project.undo_redo.add_do_method(Global, "undo_or_redo", false)
|
||||
Global.current_project.undo_redo.add_undo_method(Global, "undo_or_redo", true)
|
||||
|
||||
Global.current_project.undo_redo.add_do_property(Global.current_project, "frames", new_frames)
|
||||
Global.current_project.undo_redo.add_do_property(
|
||||
|
@ -579,8 +579,8 @@ func add_layer(is_new := true) -> void:
|
|||
Global.current_project, "layers", Global.current_project.layers
|
||||
)
|
||||
|
||||
Global.current_project.undo_redo.add_undo_method(Global, "undo")
|
||||
Global.current_project.undo_redo.add_do_method(Global, "redo")
|
||||
Global.current_project.undo_redo.add_undo_method(Global, "undo_or_redo", true)
|
||||
Global.current_project.undo_redo.add_do_method(Global, "undo_or_redo", false)
|
||||
Global.current_project.undo_redo.commit_action()
|
||||
|
||||
|
||||
|
@ -613,8 +613,8 @@ func _on_RemoveLayer_pressed() -> void:
|
|||
Global.current_project.undo_redo.add_undo_property(
|
||||
Global.current_project, "layers", Global.current_project.layers
|
||||
)
|
||||
Global.current_project.undo_redo.add_do_method(Global, "redo")
|
||||
Global.current_project.undo_redo.add_undo_method(Global, "undo")
|
||||
Global.current_project.undo_redo.add_do_method(Global, "undo_or_redo", false)
|
||||
Global.current_project.undo_redo.add_undo_method(Global, "undo_or_redo", true)
|
||||
Global.current_project.undo_redo.commit_action()
|
||||
|
||||
|
||||
|
@ -645,8 +645,8 @@ func change_layer_order(rate: int) -> void:
|
|||
Global.current_project, "current_layer", Global.current_project.current_layer
|
||||
)
|
||||
|
||||
Global.current_project.undo_redo.add_undo_method(Global, "undo")
|
||||
Global.current_project.undo_redo.add_do_method(Global, "redo")
|
||||
Global.current_project.undo_redo.add_undo_method(Global, "undo_or_redo", true)
|
||||
Global.current_project.undo_redo.add_do_method(Global, "undo_or_redo", false)
|
||||
Global.current_project.undo_redo.commit_action()
|
||||
|
||||
|
||||
|
@ -735,8 +735,8 @@ func _on_MergeDownLayer_pressed() -> void:
|
|||
Global.current_project, "current_layer", Global.current_project.current_layer
|
||||
)
|
||||
|
||||
Global.current_project.undo_redo.add_undo_method(Global, "undo")
|
||||
Global.current_project.undo_redo.add_do_method(Global, "redo")
|
||||
Global.current_project.undo_redo.add_undo_method(Global, "undo_or_redo", true)
|
||||
Global.current_project.undo_redo.add_do_method(Global, "undo_or_redo", false)
|
||||
Global.current_project.undo_redo.commit_action()
|
||||
|
||||
|
||||
|
|
|
@ -143,8 +143,8 @@ func _on_PopupMenu_id_pressed(id: int) -> void:
|
|||
)
|
||||
Global.current_project.undo_redo.add_undo_property(f, "cels", f.cels)
|
||||
|
||||
Global.current_project.undo_redo.add_undo_method(Global, "undo")
|
||||
Global.current_project.undo_redo.add_do_method(Global, "redo")
|
||||
Global.current_project.undo_redo.add_undo_method(Global, "undo_or_redo", true)
|
||||
Global.current_project.undo_redo.add_do_method(Global, "undo_or_redo", false)
|
||||
Global.current_project.undo_redo.commit_action()
|
||||
|
||||
elif popup_menu.get_item_metadata(MenuOptions.LINK) == "Link Cel":
|
||||
|
@ -164,8 +164,8 @@ func _on_PopupMenu_id_pressed(id: int) -> void:
|
|||
Global.current_project.undo_redo.add_undo_property(
|
||||
Global.current_project, "layers", Global.current_project.layers
|
||||
)
|
||||
Global.current_project.undo_redo.add_undo_method(Global, "undo")
|
||||
Global.current_project.undo_redo.add_do_method(Global, "redo")
|
||||
Global.current_project.undo_redo.add_undo_method(Global, "undo_or_redo", true)
|
||||
Global.current_project.undo_redo.add_do_method(Global, "undo_or_redo", false)
|
||||
Global.current_project.undo_redo.commit_action()
|
||||
|
||||
|
||||
|
@ -178,10 +178,10 @@ func delete_cel_contents() -> void:
|
|||
project.undos += 1
|
||||
project.undo_redo.create_action("Draw")
|
||||
project.undo_redo.add_undo_property(image, "data", data)
|
||||
project.undo_redo.add_undo_method(Global, "undo", frame, layer, project)
|
||||
project.undo_redo.add_undo_method(Global, "undo_or_redo", true, frame, layer, project)
|
||||
image.fill(0)
|
||||
project.undo_redo.add_do_property(image, "data", image.data)
|
||||
project.undo_redo.add_do_method(Global, "redo", frame, layer, project)
|
||||
project.undo_redo.add_do_method(Global, "undo_or_redo", false, frame, layer, project)
|
||||
project.undo_redo.commit_action()
|
||||
|
||||
|
||||
|
@ -267,6 +267,6 @@ func drop_data(_pos, data) -> void:
|
|||
Global.current_project.frames[frame], "cels", Global.current_project.frames[frame].cels
|
||||
)
|
||||
|
||||
Global.current_project.undo_redo.add_undo_method(Global, "undo")
|
||||
Global.current_project.undo_redo.add_do_method(Global, "redo")
|
||||
Global.current_project.undo_redo.add_undo_method(Global, "undo_or_redo", true)
|
||||
Global.current_project.undo_redo.add_do_method(Global, "undo_or_redo", false)
|
||||
Global.current_project.undo_redo.commit_action()
|
||||
|
|
|
@ -99,8 +99,8 @@ func change_frame_order(rate: int) -> void:
|
|||
Global.current_project, "current_frame", Global.current_project.current_frame
|
||||
)
|
||||
|
||||
Global.current_project.undo_redo.add_undo_method(Global, "undo")
|
||||
Global.current_project.undo_redo.add_do_method(Global, "redo")
|
||||
Global.current_project.undo_redo.add_undo_method(Global, "undo_or_redo", true)
|
||||
Global.current_project.undo_redo.add_do_method(Global, "undo_or_redo", false)
|
||||
Global.current_project.undo_redo.commit_action()
|
||||
|
||||
|
||||
|
@ -150,6 +150,6 @@ func drop_data(_pos, data) -> void:
|
|||
Global.current_project, "current_frame", Global.current_project.current_frame
|
||||
)
|
||||
|
||||
Global.current_project.undo_redo.add_undo_method(Global, "undo")
|
||||
Global.current_project.undo_redo.add_do_method(Global, "redo")
|
||||
Global.current_project.undo_redo.add_undo_method(Global, "undo_or_redo", true)
|
||||
Global.current_project.undo_redo.add_do_method(Global, "undo_or_redo", false)
|
||||
Global.current_project.undo_redo.commit_action()
|
||||
|
|
|
@ -34,6 +34,6 @@ func _on_FrameProperties_confirmed():
|
|||
Global.current_project.frames[frame].duration
|
||||
)
|
||||
|
||||
Global.current_project.undo_redo.add_do_method(Global, "redo")
|
||||
Global.current_project.undo_redo.add_undo_method(Global, "undo")
|
||||
Global.current_project.undo_redo.add_do_method(Global, "undo_or_redo", false)
|
||||
Global.current_project.undo_redo.add_undo_method(Global, "undo_or_redo", true)
|
||||
Global.current_project.undo_redo.commit_action()
|
||||
|
|
|
@ -169,6 +169,6 @@ func drop_data(_pos, data) -> void:
|
|||
Global.current_project, "layers", Global.current_project.layers
|
||||
)
|
||||
|
||||
Global.current_project.undo_redo.add_undo_method(Global, "undo")
|
||||
Global.current_project.undo_redo.add_do_method(Global, "redo")
|
||||
Global.current_project.undo_redo.add_undo_method(Global, "undo_or_redo", true)
|
||||
Global.current_project.undo_redo.add_do_method(Global, "undo_or_redo", false)
|
||||
Global.current_project.undo_redo.commit_action()
|
||||
|
|
Loading…
Reference in a new issue