66 lines
1.7 KiB
JavaScript
66 lines
1.7 KiB
JavaScript
import app from '../app.js';
|
|
import config from '../config.js';
|
|
import { Base_action } from './base.js';
|
|
|
|
export class Reset_layers_action extends Base_action {
|
|
/*
|
|
* removes all layers
|
|
*/
|
|
constructor(auto_insert) {
|
|
super('reset_layers', 'Reset Layers');
|
|
this.auto_insert = auto_insert;
|
|
this.previous_auto_increment = null;
|
|
this.delete_actions = null;
|
|
this.insert_action = null;
|
|
}
|
|
async do() {
|
|
super.do();
|
|
const auto_insert = this.auto_insert;
|
|
this.previous_auto_increment = app.Layers.auto_increment;
|
|
|
|
this.delete_actions = [];
|
|
for (let i = config.layers.length - 1; i >= 0; i--) {
|
|
const delete_action = new app.Actions.Delete_layer_action(config.layers[i].id, true);
|
|
await delete_action.do();
|
|
this.delete_actions.push(delete_action);
|
|
}
|
|
app.Layers.auto_increment = 1;
|
|
|
|
if (auto_insert != undefined && auto_insert === true) {
|
|
const settings = {};
|
|
this.insert_action = new app.Actions.Insert_layer_action(settings);
|
|
await this.insert_action.do();
|
|
}
|
|
|
|
app.Layers.render();
|
|
app.GUI.GUI_layers.render_layers();
|
|
}
|
|
async undo() {
|
|
super.undo();
|
|
if (this.insert_action) {
|
|
await this.insert_action.undo();
|
|
this.insert_action.free();
|
|
this.insert_action = null;
|
|
}
|
|
for (let i = this.delete_actions.length - 1; i >= 0; i--) {
|
|
await this.delete_actions[i].undo();
|
|
this.delete_actions[i].free();
|
|
}
|
|
app.Layers.auto_increment = this.previous_auto_increment;
|
|
|
|
app.Layers.render();
|
|
app.GUI.GUI_layers.render_layers();
|
|
}
|
|
free() {
|
|
if (this.insert_action) {
|
|
this.insert_action.free();
|
|
this.insert_action = null;
|
|
}
|
|
if (this.delete_actions) {
|
|
for (let action of this.delete_actions) {
|
|
action.free();
|
|
}
|
|
this.delete_actions = null;
|
|
}
|
|
}
|
|
} |