mirror of
https://github.com/Azornes/Comfyui-LayerForge.git
synced 2026-03-21 20:52:12 -03:00
Remove CanvasState delegating methods from Canvas
Removed delegating methods to CanvasState from Canvas.js and updated all references to use canvas.canvasState directly for state operations (undo, redo, saveStateToDB). Updated CanvasInteractions.js, CanvasIO.js, CanvasLayers.js, and CanvasView.js accordingly. Updated REFACTORING_GUIDE.md to reflect the completion of this refactor.
This commit is contained in:
@@ -469,11 +469,11 @@ export class Canvas {
|
||||
* - this.canvasInteractions dla obsługi interakcji
|
||||
* - this.canvasIO dla operacji I/O
|
||||
* - this.canvasState dla zarządzania stanem
|
||||
*
|
||||
* UWAGA: Metody delegujące do CanvasState zostały usunięte.
|
||||
* Używaj: canvas.canvasState.saveStateToDB(), canvas.canvasState.undo(), etc.
|
||||
*/
|
||||
|
||||
// Delegacje do CanvasState
|
||||
async saveStateToDB(immediate = false) { return this.canvasState.saveStateToDB(immediate); }
|
||||
|
||||
// Delegacje do CanvasLayers
|
||||
async copySelectedLayers() { return this.canvasLayers.copySelectedLayers(); }
|
||||
async handlePaste(addMode) { return this.canvasLayers.handlePaste(addMode); }
|
||||
|
||||
@@ -46,7 +46,7 @@ export class CanvasIO {
|
||||
log.warn(`Node ${this.canvas.node.id} has no layers, creating empty canvas`);
|
||||
return Promise.resolve(true);
|
||||
}
|
||||
await this.canvas.saveStateToDB(true);
|
||||
await this.canvas.canvasState.saveStateToDB(true);
|
||||
const nodeId = this.canvas.node.id;
|
||||
const delay = (nodeId % 10) * 50;
|
||||
if (delay > 0) {
|
||||
|
||||
@@ -176,7 +176,7 @@ export class CanvasInteractions {
|
||||
|
||||
if (interactionEnded) {
|
||||
this.canvas.saveState();
|
||||
this.canvas.saveStateToDB(true);
|
||||
this.canvas.canvasState.saveStateToDB(true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -297,16 +297,16 @@ export class CanvasInteractions {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
if (e.shiftKey) {
|
||||
this.canvas.redo();
|
||||
this.canvas.canvasState.redo();
|
||||
} else {
|
||||
this.canvas.undo();
|
||||
this.canvas.canvasState.undo();
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (e.key.toLowerCase() === 'y') {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
this.canvas.redo();
|
||||
this.canvas.canvasState.redo();
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -324,30 +324,30 @@ export class CanvasInteractions {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
if (e.shiftKey) {
|
||||
this.canvas.redo();
|
||||
this.canvas.canvasState.redo();
|
||||
} else {
|
||||
this.canvas.undo();
|
||||
this.canvas.canvasState.undo();
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (e.key.toLowerCase() === 'y') {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
this.canvas.redo();
|
||||
this.canvas.canvasState.redo();
|
||||
return;
|
||||
}
|
||||
if (e.key.toLowerCase() === 'c') {
|
||||
if (this.canvas.selectedLayers.length > 0) {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
this.canvas.copySelectedLayers();
|
||||
this.canvas.canvasLayers.copySelectedLayers();
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (e.key.toLowerCase() === 'v') {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
this.canvas.handlePaste('mouse');
|
||||
this.canvas.canvasLayers.handlePaste('mouse');
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -359,7 +359,7 @@ export class CanvasLayers {
|
||||
this.canvas.render();
|
||||
|
||||
if (saveHistory) {
|
||||
this.canvas.saveStateToDB();
|
||||
this.canvas.canvasState.saveStateToDB();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -749,14 +749,14 @@ async function createCanvasWidget(node, widget, app) {
|
||||
textContent: "Undo",
|
||||
title: "Undo last action",
|
||||
disabled: true,
|
||||
onclick: () => canvas.undo()
|
||||
onclick: () => canvas.canvasState.undo()
|
||||
}),
|
||||
$el("button.painter-button", {
|
||||
id: `redo-button-${node.id}`,
|
||||
textContent: "Redo",
|
||||
title: "Redo last undone action",
|
||||
disabled: true,
|
||||
onclick: () => canvas.redo()
|
||||
onclick: () => canvas.canvasState.redo()
|
||||
}),
|
||||
]),
|
||||
$el("div.painter-separator"),
|
||||
|
||||
@@ -146,7 +146,7 @@ canvas.imageReferenceManager.manualGarbageCollection()
|
||||
### 🎯 Kolejne kroki
|
||||
|
||||
1. **Monitorowanie działania** - sprawdzenie czy wszystkie funkcje działają poprawnie ✅
|
||||
2. **Usunięcie metod delegujących** - w przyszłych wersjach (po okresie przejściowym)
|
||||
2. **Usunięcie metod delegujących do CanvasState** - zakończone ✅
|
||||
3. **Rozszerzenie dokumentacji** - dla poszczególnych modułów ✅
|
||||
4. **Dodanie testów jednostkowych** - dla modułów
|
||||
|
||||
@@ -168,6 +168,13 @@ canvas.imageReferenceManager.manualGarbageCollection()
|
||||
- Poprawiono wywołania w CanvasView.js - `canvas.rotateLayer()` → `canvas.canvasLayers.rotateLayer()`
|
||||
- Wszystkie moduły używają teraz spójnej konwencji nazewnictwa
|
||||
|
||||
4. **Usunięcie metod delegujących do CanvasState** ✅
|
||||
- Usunięto metodę delegującą `saveStateToDB()` z Canvas.js
|
||||
- Zaktualizowano wszystkie wywołania w CanvasView.js: `canvas.undo()` → `canvas.canvasState.undo()`
|
||||
- Zaktualizowano wszystkie wywołania w CanvasInteractions.js dla operacji undo/redo i copy/paste
|
||||
- Zaktualizowano wywołania w CanvasLayers.js i CanvasIO.js
|
||||
- Wszystkie operacje na stanie używają teraz bezpośrednio modułu `canvasState`
|
||||
|
||||
## Uwagi dla deweloperów
|
||||
|
||||
- ✅ **Refaktoryzacja zakończona** - wszystkie pliki zostały zaktualizowane
|
||||
|
||||
Reference in New Issue
Block a user