add recent file renaming
This commit is contained in:
parent
2f5cf932e8
commit
0c2183ab54
3 changed files with 66 additions and 4 deletions
|
|
@ -109,6 +109,33 @@
|
|||
});
|
||||
};
|
||||
|
||||
DP.rename = function(name, newname, callback) {
|
||||
if (!this.files[name]) return callback({error: 'no such file'});
|
||||
if (!newname || newname == name) return callback({error: 'invalid new name'});
|
||||
let done = 0;
|
||||
let error = [];
|
||||
let store = this;
|
||||
function complete(ok, err) {
|
||||
if (err) error.push(err);
|
||||
if (++done === 2) {
|
||||
store.files[newname] = store.files[name];
|
||||
delete store.files[name];
|
||||
saveFileList(store);
|
||||
store.db.remove(`fdec-${name}`);
|
||||
store.db.remove(`file-${name}`);
|
||||
callback(error.length ? {error} : {});
|
||||
}
|
||||
}
|
||||
store.db.get(`fdec-${name}`, (vertices) => {
|
||||
if (!vertices) return complete(false, 'no decimation');
|
||||
store.db.put(`fdec-${newname}`, vertices, complete);
|
||||
});
|
||||
store.db.get(`file-${name}`, (vertices) => {
|
||||
if (!vertices) return complete(false, 'no raw file');
|
||||
store.db.put(`file-${newname}`, vertices, complete);
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {String} name
|
||||
* @param {Function} callback
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
if (self.kiri.init) return;
|
||||
|
||||
const KIRI = self.kiri,
|
||||
BASE = self.base,
|
||||
MOTO = self.moto,
|
||||
CONF = KIRI.conf,
|
||||
WIN = self.window,
|
||||
|
|
@ -317,6 +318,9 @@
|
|||
case cca('P'): // position widget
|
||||
positionSelection();
|
||||
break;
|
||||
case cca('r'): // recent files
|
||||
API.modal.show('files');
|
||||
break;
|
||||
case cca('R'): // position widget
|
||||
rotateInputSelection();
|
||||
break;
|
||||
|
|
@ -395,7 +399,7 @@
|
|||
API.show.alert("select object to rotate");
|
||||
return;
|
||||
}
|
||||
let coord = prompt("Enter X,Y,Z degrees of rotation").split(','),
|
||||
let coord = (prompt("Enter X,Y,Z degrees of rotation") || '').split(','),
|
||||
prod = Math.PI / 180,
|
||||
x = parseFloat(coord[0] || 0.0) * prod,
|
||||
y = parseFloat(coord[1] || 0.0) * prod,
|
||||
|
|
@ -1013,23 +1017,46 @@
|
|||
});
|
||||
for (let i=0; i<list.length; i++) {
|
||||
let row = DOC.createElement('div'),
|
||||
renm = DOC.createElement('button'),
|
||||
load = DOC.createElement('button'),
|
||||
size = DOC.createElement('button'),
|
||||
del = DOC.createElement('button'),
|
||||
file = list[i],
|
||||
name = file.n;
|
||||
name = file.n,
|
||||
split = name.split('.'),
|
||||
short = split[0],
|
||||
ext = split[1] ? `.${split[1]}` : '';
|
||||
|
||||
renm.setAttribute('class', 'rename');
|
||||
renm.setAttribute('title', 'rename file');
|
||||
renm.appendChild(DOC.createTextNode('n'));
|
||||
renm.onclick = () => {
|
||||
let newname = prompt(`rename file`, short);
|
||||
if (newname && newname !== short) {
|
||||
CATALOG.rename(name, `${newname}${ext}`, then => {
|
||||
CATALOG.refresh();
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
load.setAttribute('load', name);
|
||||
load.setAttribute('title', 'file: '+name+'\nvertices: '+file.v);
|
||||
load.onclick = loadCatalogFile;
|
||||
load.appendChild(DOC.createTextNode(name.split('.')[0]));
|
||||
load.appendChild(DOC.createTextNode(short));
|
||||
|
||||
del.setAttribute('del', name);
|
||||
del.setAttribute('title', "remove '"+name+"'");
|
||||
del.onclick = deleteCatalogFile;
|
||||
del.appendChild(DOC.createTextNode('x'));
|
||||
|
||||
row.setAttribute("class", "flow-row");
|
||||
size.setAttribute("disabled", true);
|
||||
size.setAttribute("class", "label");
|
||||
size.appendChild(DOC.createTextNode(BASE.util.comma(file.v)));
|
||||
|
||||
row.setAttribute("class", "row a-center");
|
||||
row.appendChild(renm);
|
||||
row.appendChild(load);
|
||||
row.appendChild(size);
|
||||
row.appendChild(del);
|
||||
table.appendChild(row);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -714,6 +714,14 @@ th, tr, td {
|
|||
height: 350px;
|
||||
overflow-y: scroll;
|
||||
}
|
||||
#catalogList .label {
|
||||
width: 10em;
|
||||
justify-content: flex-end;
|
||||
}
|
||||
#catalogList .rename {
|
||||
font-style: italic;
|
||||
color: #335;
|
||||
}
|
||||
|
||||
#slider {
|
||||
display: none;
|
||||
|
|
|
|||
Loading…
Reference in a new issue