mirror of
https://github.com/Azornes/Comfyui-LayerForge.git
synced 2026-03-25 06:22:14 -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.canvasInteractions dla obsługi interakcji
|
||||||
* - this.canvasIO dla operacji I/O
|
* - this.canvasIO dla operacji I/O
|
||||||
* - this.canvasState dla zarządzania stanem
|
* - 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
|
// Delegacje do CanvasLayers
|
||||||
async copySelectedLayers() { return this.canvasLayers.copySelectedLayers(); }
|
async copySelectedLayers() { return this.canvasLayers.copySelectedLayers(); }
|
||||||
async handlePaste(addMode) { return this.canvasLayers.handlePaste(addMode); }
|
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`);
|
log.warn(`Node ${this.canvas.node.id} has no layers, creating empty canvas`);
|
||||||
return Promise.resolve(true);
|
return Promise.resolve(true);
|
||||||
}
|
}
|
||||||
await this.canvas.saveStateToDB(true);
|
await this.canvas.canvasState.saveStateToDB(true);
|
||||||
const nodeId = this.canvas.node.id;
|
const nodeId = this.canvas.node.id;
|
||||||
const delay = (nodeId % 10) * 50;
|
const delay = (nodeId % 10) * 50;
|
||||||
if (delay > 0) {
|
if (delay > 0) {
|
||||||
|
|||||||
@@ -176,7 +176,7 @@ export class CanvasInteractions {
|
|||||||
|
|
||||||
if (interactionEnded) {
|
if (interactionEnded) {
|
||||||
this.canvas.saveState();
|
this.canvas.saveState();
|
||||||
this.canvas.saveStateToDB(true);
|
this.canvas.canvasState.saveStateToDB(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -297,16 +297,16 @@ export class CanvasInteractions {
|
|||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
if (e.shiftKey) {
|
if (e.shiftKey) {
|
||||||
this.canvas.redo();
|
this.canvas.canvasState.redo();
|
||||||
} else {
|
} else {
|
||||||
this.canvas.undo();
|
this.canvas.canvasState.undo();
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (e.key.toLowerCase() === 'y') {
|
if (e.key.toLowerCase() === 'y') {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
this.canvas.redo();
|
this.canvas.canvasState.redo();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -324,30 +324,30 @@ export class CanvasInteractions {
|
|||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
if (e.shiftKey) {
|
if (e.shiftKey) {
|
||||||
this.canvas.redo();
|
this.canvas.canvasState.redo();
|
||||||
} else {
|
} else {
|
||||||
this.canvas.undo();
|
this.canvas.canvasState.undo();
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (e.key.toLowerCase() === 'y') {
|
if (e.key.toLowerCase() === 'y') {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
this.canvas.redo();
|
this.canvas.canvasState.redo();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (e.key.toLowerCase() === 'c') {
|
if (e.key.toLowerCase() === 'c') {
|
||||||
if (this.canvas.selectedLayers.length > 0) {
|
if (this.canvas.selectedLayers.length > 0) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
this.canvas.copySelectedLayers();
|
this.canvas.canvasLayers.copySelectedLayers();
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (e.key.toLowerCase() === 'v') {
|
if (e.key.toLowerCase() === 'v') {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
this.canvas.handlePaste('mouse');
|
this.canvas.canvasLayers.handlePaste('mouse');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -359,7 +359,7 @@ export class CanvasLayers {
|
|||||||
this.canvas.render();
|
this.canvas.render();
|
||||||
|
|
||||||
if (saveHistory) {
|
if (saveHistory) {
|
||||||
this.canvas.saveStateToDB();
|
this.canvas.canvasState.saveStateToDB();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -749,14 +749,14 @@ async function createCanvasWidget(node, widget, app) {
|
|||||||
textContent: "Undo",
|
textContent: "Undo",
|
||||||
title: "Undo last action",
|
title: "Undo last action",
|
||||||
disabled: true,
|
disabled: true,
|
||||||
onclick: () => canvas.undo()
|
onclick: () => canvas.canvasState.undo()
|
||||||
}),
|
}),
|
||||||
$el("button.painter-button", {
|
$el("button.painter-button", {
|
||||||
id: `redo-button-${node.id}`,
|
id: `redo-button-${node.id}`,
|
||||||
textContent: "Redo",
|
textContent: "Redo",
|
||||||
title: "Redo last undone action",
|
title: "Redo last undone action",
|
||||||
disabled: true,
|
disabled: true,
|
||||||
onclick: () => canvas.redo()
|
onclick: () => canvas.canvasState.redo()
|
||||||
}),
|
}),
|
||||||
]),
|
]),
|
||||||
$el("div.painter-separator"),
|
$el("div.painter-separator"),
|
||||||
|
|||||||
@@ -146,7 +146,7 @@ canvas.imageReferenceManager.manualGarbageCollection()
|
|||||||
### 🎯 Kolejne kroki
|
### 🎯 Kolejne kroki
|
||||||
|
|
||||||
1. **Monitorowanie działania** - sprawdzenie czy wszystkie funkcje działają poprawnie ✅
|
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 ✅
|
3. **Rozszerzenie dokumentacji** - dla poszczególnych modułów ✅
|
||||||
4. **Dodanie testów jednostkowych** - dla 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()`
|
- Poprawiono wywołania w CanvasView.js - `canvas.rotateLayer()` → `canvas.canvasLayers.rotateLayer()`
|
||||||
- Wszystkie moduły używają teraz spójnej konwencji nazewnictwa
|
- 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
|
## Uwagi dla deweloperów
|
||||||
|
|
||||||
- ✅ **Refaktoryzacja zakończona** - wszystkie pliki zostały zaktualizowane
|
- ✅ **Refaktoryzacja zakończona** - wszystkie pliki zostały zaktualizowane
|
||||||
|
|||||||
Reference in New Issue
Block a user