add recent file renaming

This commit is contained in:
Stewart Allen 2020-06-09 19:23:03 -04:00
commit 0c2183ab54
3 changed files with 66 additions and 4 deletions

View file

@ -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 {String} name
* @param {Function} callback * @param {Function} callback

View file

@ -7,6 +7,7 @@
if (self.kiri.init) return; if (self.kiri.init) return;
const KIRI = self.kiri, const KIRI = self.kiri,
BASE = self.base,
MOTO = self.moto, MOTO = self.moto,
CONF = KIRI.conf, CONF = KIRI.conf,
WIN = self.window, WIN = self.window,
@ -317,6 +318,9 @@
case cca('P'): // position widget case cca('P'): // position widget
positionSelection(); positionSelection();
break; break;
case cca('r'): // recent files
API.modal.show('files');
break;
case cca('R'): // position widget case cca('R'): // position widget
rotateInputSelection(); rotateInputSelection();
break; break;
@ -395,7 +399,7 @@
API.show.alert("select object to rotate"); API.show.alert("select object to rotate");
return; 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, prod = Math.PI / 180,
x = parseFloat(coord[0] || 0.0) * prod, x = parseFloat(coord[0] || 0.0) * prod,
y = parseFloat(coord[1] || 0.0) * prod, y = parseFloat(coord[1] || 0.0) * prod,
@ -1013,23 +1017,46 @@
}); });
for (let i=0; i<list.length; i++) { for (let i=0; i<list.length; i++) {
let row = DOC.createElement('div'), let row = DOC.createElement('div'),
renm = DOC.createElement('button'),
load = DOC.createElement('button'), load = DOC.createElement('button'),
size = DOC.createElement('button'),
del = DOC.createElement('button'), del = DOC.createElement('button'),
file = list[i], 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('load', name);
load.setAttribute('title', 'file: '+name+'\nvertices: '+file.v); load.setAttribute('title', 'file: '+name+'\nvertices: '+file.v);
load.onclick = loadCatalogFile; load.onclick = loadCatalogFile;
load.appendChild(DOC.createTextNode(name.split('.')[0])); load.appendChild(DOC.createTextNode(short));
del.setAttribute('del', name); del.setAttribute('del', name);
del.setAttribute('title', "remove '"+name+"'"); del.setAttribute('title', "remove '"+name+"'");
del.onclick = deleteCatalogFile; del.onclick = deleteCatalogFile;
del.appendChild(DOC.createTextNode('x')); 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(load);
row.appendChild(size);
row.appendChild(del); row.appendChild(del);
table.appendChild(row); table.appendChild(row);
} }

View file

@ -714,6 +714,14 @@ th, tr, td {
height: 350px; height: 350px;
overflow-y: scroll; overflow-y: scroll;
} }
#catalogList .label {
width: 10em;
justify-content: flex-end;
}
#catalogList .rename {
font-style: italic;
color: #335;
}
#slider { #slider {
display: none; display: none;