diff --git a/src/Autoload/ExtensionsApi.gd b/src/Autoload/ExtensionsApi.gd index 46adabb2d..ae475b79c 100644 --- a/src/Autoload/ExtensionsApi.gd +++ b/src/Autoload/ExtensionsApi.gd @@ -713,8 +713,8 @@ class SignalsAPI: var _last_cel: BaseCel func _init() -> void: - Global.project_changed.connect(_update_texture_signal) - Global.cel_changed.connect(_update_texture_signal) + Global.project_switched.connect(_update_texture_signal) + Global.cel_switched.connect(_update_texture_signal) func _update_texture_signal(): if _last_cel: @@ -760,12 +760,12 @@ class SignalsAPI: ## connects/disconnects a signal to [param callable], that emits ## whenever you switch to some other project. func signal_project_changed(callable: Callable, is_disconnecting := false): - _connect_disconnect(Global.project_changed, callable, is_disconnecting) + _connect_disconnect(Global.project_switched, callable, is_disconnecting) ## connects/disconnects a signal to [param callable], that emits ## whenever you select a different cel. func signal_cel_changed(callable: Callable, is_disconnecting := false): - _connect_disconnect(Global.cel_changed, callable, is_disconnecting) + _connect_disconnect(Global.cel_switched, callable, is_disconnecting) # TOOL RELATED SIGNALS ## connects/disconnects a signal to [param callable], that emits diff --git a/src/Autoload/Global.gd b/src/Autoload/Global.gd index fced34451..4a829a726 100644 --- a/src/Autoload/Global.gd +++ b/src/Autoload/Global.gd @@ -8,8 +8,10 @@ extends Node signal pixelorama_opened ## Emitted as soon as Pixelorama fully opens up. signal pixelorama_about_to_close ## Emitted just before Pixelorama is about to close. signal project_created(Project) ## Emitted when a new project class is initialized. -signal project_changed ## Emitted whenever you switch to some other project tab. -signal cel_changed ## Emitted whenever you select a different cel. +signal project_about_to_switch ## Emitted before a project is about to be switched +signal project_switched ## Emitted whenever you switch to some other project tab. +signal cel_switched ## Emitted whenever you select a different cel. +signal project_changed(Project) ## Emitted whenever a project is changed. enum LayerTypes { PIXEL, GROUP, THREE_D } enum GridTypes { CARTESIAN, ISOMETRIC, ALL } @@ -95,11 +97,12 @@ var current_project_index := 0: return canvas.selection.transform_content_confirm() current_project_index = value + project_about_to_switch.emit() current_project = projects[value] - project_changed.connect(current_project.change_project) - project_changed.emit() - project_changed.disconnect(current_project.change_project) - cel_changed.emit() + project_switched.connect(current_project.change_project) + project_switched.emit() + project_switched.disconnect(current_project.change_project) + cel_switched.emit() # Canvas related stuff ## Tells if the user allowed to draw on the canvas. Usually it is temporarily set to @@ -544,7 +547,7 @@ func _ready() -> void: current_project.fill_color = default_fill_color await get_tree().process_frame - project_changed.emit() + project_switched.emit() func _initialize_keychain() -> void: @@ -774,9 +777,9 @@ func undo_or_redo( second_viewport.get_child(0).get_node("CanvasPreview").queue_redraw() canvas_preview_container.canvas_preview.queue_redraw() if !project.has_changed: - project.has_changed = true if project == current_project: main_window.title = main_window.title + "(*)" + project.has_changed = true func _renderer_changed(value: int) -> void: diff --git a/src/Autoload/OpenSave.gd b/src/Autoload/OpenSave.gd index c13dc5225..5bf38ab64 100644 --- a/src/Autoload/OpenSave.gd +++ b/src/Autoload/OpenSave.gd @@ -220,8 +220,8 @@ func open_pxo_file(path: String, untitled_backup := false, replace_empty := true if empty_project: new_project.change_project() - Global.project_changed.emit() - Global.cel_changed.emit() + Global.project_switched.emit() + Global.cel_switched.emit() else: Global.projects.append(new_project) Global.tabs.current_tab = Global.tabs.get_tab_count() - 1 diff --git a/src/Autoload/Tools.gd b/src/Autoload/Tools.gd index 468567d61..4ef87fdf8 100644 --- a/src/Autoload/Tools.gd +++ b/src/Autoload/Tools.gd @@ -297,7 +297,7 @@ class Slot: func _ready() -> void: - Global.cel_changed.connect(_cel_changed) + Global.cel_switched.connect(_cel_switched) _tool_buttons = Global.control.find_child("ToolButtons") for t in tools: add_tool_button(tools[t]) @@ -558,7 +558,7 @@ func get_alpha_dynamic(strength := 1.0) -> float: return strength -func _cel_changed() -> void: +func _cel_switched() -> void: var layer: BaseLayer = Global.current_project.layers[Global.current_project.current_layer] var layer_type := layer.get_layer_type() # Do not make any changes when its the same type of layer, or a group layer diff --git a/src/Classes/Project.gd b/src/Classes/Project.gd index 1c4316a6e..5a4872d04 100644 --- a/src/Classes/Project.gd +++ b/src/Classes/Project.gd @@ -23,6 +23,7 @@ var has_changed := false: set(value): has_changed = value if value: + Global.project_changed.emit(self) Global.tabs.set_tab_title(Global.tabs.current_tab, name + "(*)") else: Global.tabs.set_tab_title(Global.tabs.current_tab, name) @@ -541,7 +542,7 @@ func change_cel(new_frame: int, new_layer := -1) -> void: order_layers() Global.transparent_checker.update_rect() - Global.cel_changed.emit() + Global.cel_switched.emit() if get_current_cel() is Cel3D: await RenderingServer.frame_post_draw await RenderingServer.frame_post_draw diff --git a/src/Tools/3DTools/3DShapeEdit.gd b/src/Tools/3DTools/3DShapeEdit.gd index 356ec338d..92adf7ab4 100644 --- a/src/Tools/3DTools/3DShapeEdit.gd +++ b/src/Tools/3DTools/3DShapeEdit.gd @@ -89,8 +89,8 @@ func _input(_event: InputEvent) -> void: func _ready() -> void: super._ready() - Global.cel_changed.connect(_cel_changed) - _cel_changed() + Global.cel_switched.connect(_cel_switched) + _cel_switched() var new_object_popup := new_object_menu_button.get_popup() for object in _object_names: new_object_popup.add_item(_object_names[object], object) @@ -214,7 +214,7 @@ func _on_ObjectOptionButton_item_selected(index: int) -> void: _cel.selected = object -func _cel_changed() -> void: +func _cel_switched() -> void: if not Global.current_project.get_current_cel() is Cel3D: get_child(0).visible = false # Just to ensure that the content of the tool is hidden return diff --git a/src/UI/Canvas/Canvas.gd b/src/UI/Canvas/Canvas.gd index 47f5d5798..29de35cc2 100644 --- a/src/UI/Canvas/Canvas.gd +++ b/src/UI/Canvas/Canvas.gd @@ -31,7 +31,7 @@ var layer_metadata_texture := ImageTexture.new() func _ready() -> void: material.set_shader_parameter("layers", layer_texture_array) material.set_shader_parameter("metadata", layer_metadata_texture) - Global.project_changed.connect(queue_redraw) + Global.project_switched.connect(queue_redraw) onion_past.type = onion_past.PAST onion_past.blue_red_color = Global.onion_skinning_past_color onion_future.type = onion_future.FUTURE diff --git a/src/UI/Canvas/CanvasPreview.gd b/src/UI/Canvas/CanvasPreview.gd index 33753e43c..da75c2160 100644 --- a/src/UI/Canvas/CanvasPreview.gd +++ b/src/UI/Canvas/CanvasPreview.gd @@ -26,7 +26,7 @@ var frame_index := 0: func _ready() -> void: - Global.cel_changed.connect(_cel_changed) + Global.cel_switched.connect(_cel_switched) material = Global.canvas.material @@ -130,7 +130,7 @@ func _on_AnimationTimer_timeout() -> void: queue_redraw() -func _cel_changed() -> void: +func _cel_switched() -> void: queue_redraw() diff --git a/src/UI/Canvas/CropRect.gd b/src/UI/Canvas/CropRect.gd index bc104100d..e26d593e3 100644 --- a/src/UI/Canvas/CropRect.gd +++ b/src/UI/Canvas/CropRect.gd @@ -28,7 +28,7 @@ var tool_count := 0: func _ready() -> void: updated.connect(queue_redraw) - Global.project_changed.connect(reset) + Global.project_switched.connect(reset) mode = Global.config_cache.get_value("preferences", "crop_mode", 0) locked_size = Global.config_cache.get_value("preferences", "crop_locked_size", false) reset() diff --git a/src/UI/Canvas/Gizmos3D.gd b/src/UI/Canvas/Gizmos3D.gd index c73f5f326..1f855a33a 100644 --- a/src/UI/Canvas/Gizmos3D.gd +++ b/src/UI/Canvas/Gizmos3D.gd @@ -33,7 +33,7 @@ var gizmo_rot_z := PackedVector2Array() func _ready() -> void: set_process_input(false) - Global.cel_changed.connect(_cel_changed) + Global.cel_switched.connect(_cel_switched) Global.camera.zoom_changed.connect(queue_redraw) @@ -68,7 +68,7 @@ func get_hovering_gizmo(pos: Vector2) -> int: return Cel3DObject.Gizmos.NONE -func _cel_changed() -> void: +func _cel_switched() -> void: queue_redraw() set_process_input(Global.current_project.get_current_cel() is Cel3D) diff --git a/src/UI/Canvas/Grid.gd b/src/UI/Canvas/Grid.gd index edd4e81e9..1d7f86570 100644 --- a/src/UI/Canvas/Grid.gd +++ b/src/UI/Canvas/Grid.gd @@ -2,7 +2,7 @@ extends Node2D func _ready() -> void: - Global.project_changed.connect(queue_redraw) + Global.project_switched.connect(queue_redraw) func _draw() -> void: diff --git a/src/UI/Canvas/Rulers/HorizontalRuler.gd b/src/UI/Canvas/Rulers/HorizontalRuler.gd index ec66e964f..fcba83191 100644 --- a/src/UI/Canvas/Rulers/HorizontalRuler.gd +++ b/src/UI/Canvas/Rulers/HorizontalRuler.gd @@ -10,7 +10,7 @@ var last: Vector2 func _ready() -> void: - Global.project_changed.connect(queue_redraw) + Global.project_switched.connect(queue_redraw) func _gui_input(event: InputEvent) -> void: diff --git a/src/UI/Canvas/Rulers/VerticalRuler.gd b/src/UI/Canvas/Rulers/VerticalRuler.gd index 6bc9bc7f9..d42cbf739 100644 --- a/src/UI/Canvas/Rulers/VerticalRuler.gd +++ b/src/UI/Canvas/Rulers/VerticalRuler.gd @@ -10,7 +10,7 @@ var last: Vector2 func _ready() -> void: - Global.project_changed.connect(queue_redraw) + Global.project_switched.connect(queue_redraw) func _gui_input(event: InputEvent) -> void: diff --git a/src/UI/Dialogs/TileModeOffsetsDialog.gd b/src/UI/Dialogs/TileModeOffsetsDialog.gd index 61dc4a472..2d79a4f77 100644 --- a/src/UI/Dialogs/TileModeOffsetsDialog.gd +++ b/src/UI/Dialogs/TileModeOffsetsDialog.gd @@ -9,8 +9,8 @@ extends ConfirmationDialog func _ready() -> void: - Global.project_changed.connect(change_mask) - Global.cel_changed.connect(change_mask) + Global.project_switched.connect(change_mask) + Global.cel_switched.connect(change_mask) await get_tree().process_frame change_mask() diff --git a/src/UI/Timeline/AnimationTimeline.gd b/src/UI/Timeline/AnimationTimeline.gd index 03e124db8..80dc8d5e0 100644 --- a/src/UI/Timeline/AnimationTimeline.gd +++ b/src/UI/Timeline/AnimationTimeline.gd @@ -106,7 +106,7 @@ func _ready() -> void: # emit signals that were supposed to be emitted (Check if it's still required in godot 4) %PastPlacement.item_selected.emit(0 if past_above else 1) %FuturePlacement.item_selected.emit(0 if future_above else 1) - Global.cel_changed.connect(_cel_changed) + Global.cel_switched.connect(_cel_switched) # Makes sure that the frame and tag scroll bars are in the right place: Global.layer_vbox.emit_signal.call_deferred("resized") @@ -1015,7 +1015,7 @@ func _on_onion_skinning_settings_visibility_changed() -> void: # Methods to update the UI in response to changes in the current project -func _cel_changed() -> void: +func _cel_switched() -> void: _toggle_frame_buttons() _toggle_layer_buttons() var project := Global.current_project