diff --git a/editor/src/Editor.vue b/editor/src/Editor.vue index ae0500db..71430d37 100644 --- a/editor/src/Editor.vue +++ b/editor/src/Editor.vue @@ -17,6 +17,10 @@ :snippets="snippets" :updateContent="updateContent" :runScript="runScript" + :newFile="newFile" + :saveFile="saveFile" + :newSnippet="newSnippet" + :saveSnippet="saveSnippet" /> @@ -29,6 +33,21 @@ import { BDEdit } from 'bdedit'; ace.acequire = ace.require; + const modes = { + 'css': 'css', + 'scss': 'scss', + 'js': 'js', + 'txt': 'text', + 'json': 'json' + }; + + function resolveMode(fileName) { + if (!fileName.includes('.')) return 'text'; + const ext = fileName.substr(fileName.lastIndexOf('.') + 1); + if (modes.hasOwnProperty(ext)) return modes[ext]; + return 'text'; + } + export default { data() { return { @@ -59,6 +78,48 @@ return ClientIPC.send('editor-runScript', script); }, + newFile(fileName) { + const prefix = fileName; + const mode = resolveMode(fileName); + + let newName = prefix; + let iter = 0; + + while (this.files.find(file => file.name === newName)) { + newName = `${prefix}_${iter}`; + iter++; + } + + const newItem = { type: 'file', name: newName, content: '', mode, saved: false }; + this.files.push(newItem); + return newItem; + }, + + newSnippet(snippetName) { + const prefix = snippetName; + const mode = resolveMode(snippetName); + + let newName = prefix; + let iter = 0; + + while (this.snippets.find(snippet => snippet.name === newName)) { + newName = `${prefix}_${iter}`; + iter++; + } + + const newItem = { type: 'snippet', name: newName, content: '', mode, saved: false }; + this.snippets.push(newItem); + return newItem; + }, + + saveFile(file) { + + }, + + saveSnippet(snippet) { + + }, + toggleaot() { this.alwaysOnTop = !this.alwaysOnTop; remote.getCurrentWindow().setAlwaysOnTop(this.alwaysOnTop);