mirror of
https://github.com/antos-rde/antosdk-apps.git
synced 2024-11-09 15:08:27 +01:00
145 lines
3.4 KiB
JavaScript
145 lines
3.4 KiB
JavaScript
(function() {
|
|
var TinyEditor;
|
|
|
|
TinyEditor = class TinyEditor extends this.OS.GUI.BaseApplication {
|
|
constructor(args) {
|
|
super("TinyEditor", args);
|
|
}
|
|
|
|
main() {
|
|
var me;
|
|
me = this;
|
|
this.editor = this.find("editor");
|
|
this.bindKey("ALT-N", function() {
|
|
return me.newFile();
|
|
});
|
|
this.bindKey("ALT-O", function() {
|
|
return me.openFile();
|
|
});
|
|
this.bindKey("CTRL-S", function() {
|
|
return me.saveFile();
|
|
});
|
|
this.filehandler = this.args && this.args.length > 0 ? this.args[0].asFileHandler() : null;
|
|
$(this.editor).on('input', function(e) {
|
|
if (me.filehandler.dirty === true) {
|
|
return;
|
|
}
|
|
me.filehandler.dirty = true;
|
|
return me.scheme.set("apptitle", `${me.filehandler.path}*`);
|
|
});
|
|
return this.read();
|
|
}
|
|
|
|
menu() {
|
|
var m, me;
|
|
me = this;
|
|
m = [
|
|
{
|
|
text: "__(File)",
|
|
child: [
|
|
{
|
|
text: "__(New)",
|
|
dataid: "new",
|
|
shortcut: 'A-N'
|
|
},
|
|
{
|
|
text: "__(Open)",
|
|
dataid: "open",
|
|
shortcut: 'A-O'
|
|
},
|
|
{
|
|
text: "__(Save)",
|
|
dataid: "save",
|
|
shortcut: 'C-S'
|
|
}
|
|
],
|
|
onmenuselect: function(e) {
|
|
switch (e.item.data.dataid) {
|
|
case "new":
|
|
return me.newFile();
|
|
case "open":
|
|
return me.openFile();
|
|
case "save":
|
|
return me.saveFile();
|
|
}
|
|
}
|
|
}
|
|
];
|
|
return m;
|
|
}
|
|
|
|
newFile() {
|
|
this.filehandler = null;
|
|
return this.read();
|
|
}
|
|
|
|
openFile() {
|
|
var me;
|
|
me = this;
|
|
return this.openDialog("FileDiaLog", function(dir, fname, d) {
|
|
me.filehandler = `${dir}/${fname}`.asFileHandler();
|
|
return me.read();
|
|
}, __("Open file"));
|
|
}
|
|
|
|
saveFile() {
|
|
var me;
|
|
me = this;
|
|
this.filehandler.cache = this.editor.value;
|
|
if (this.filehandler.path !== "Untitled") {
|
|
return this.write();
|
|
}
|
|
return this.openDialog("FileDiaLog", function(dir, fname, d) {
|
|
me.filehandler.setPath(`${dir}/${fname}`);
|
|
return me.write();
|
|
}, __("Save as"), {
|
|
file: me.filehandler
|
|
});
|
|
}
|
|
|
|
read() {
|
|
var me;
|
|
me = this;
|
|
this.editor.value = "";
|
|
if (this.filehandler === null) {
|
|
this.filehandler = "Untitled".asFileHandler();
|
|
this.scheme.set("apptitle", "Untitled");
|
|
return;
|
|
}
|
|
return this.filehandler.read(function(d) {
|
|
me.scheme.set("apptitle", me.filehandler.path);
|
|
return me.editor.value = d;
|
|
});
|
|
}
|
|
|
|
write() {
|
|
var me;
|
|
me = this;
|
|
return this.filehandler.write("text/plain", function(d) {
|
|
if (d.error) {
|
|
return me.error(__("Error saving file {0}", me.filehandler.path));
|
|
}
|
|
me.filehandler.dirty = false;
|
|
return me.scheme.set("apptitle", `${me.filehandler.path}`);
|
|
});
|
|
}
|
|
|
|
cleanup(e) {
|
|
var me;
|
|
if (!this.filehandler.dirty) {
|
|
return;
|
|
}
|
|
me = this;
|
|
e.preventDefault();
|
|
return this.ask("__(Quit)", "__(Quit without saving?)", function() {
|
|
me.filehandler.dirty = false;
|
|
return me.quit();
|
|
});
|
|
}
|
|
|
|
};
|
|
|
|
this.OS.register("TinyEditor", TinyEditor);
|
|
|
|
}).call(this);
|