Electronでエディタを作る(ACE使用) ~ローカルへファイル書込み~
2016/06/14
[ad#top-1]
前回、ローカルにあるSift-JISファイルを読み込む方法を紹介しました。エディタライブラリーACEを使っています。
今回は書込みです。index.html側に[Save]ボタンを仕込んでおきます。
<button onclick=”saveAsFile();”>Save</button>
で、JavaScript(editor.js)に以下のコードを書けばOKです。
| function saveAsFile() { |
| var win = browserWindow.getFocusedWindow(); |
| dialog.showSaveDialog( |
| win, |
| { |
| properties: [‘openFile’], |
| filters: [ |
| { |
| name: ‘C#ソースファイル’, |
| extensions: [‘cs’] |
| }, |
| { |
| name: ‘テキストファイル’, |
| extensions: [‘txt’] |
| } |
| ] |
| }, |
| // セーブ用ダイアログが閉じられた後のコールバック関数 |
| function (fileName) { |
| if (fileName) { |
| var data = editor.getValue(); |
| writeFile(fileName, data); |
| } |
| } |
| ); |
| } |
| function writeFile(path, data) { |
| fs.writeFile(path, data, function (error) { |
| if (error != null) { |
| alert(‘error : ‘ + error); |
| return; |
| } |
| }); |
| } |
出来栄えはこんな感じです。
saveAsFile()は、いわゆる「名前を付けて保存」なので、毎回どこに保存するかダイアログが現れます。もし上書き保存をしたい場合は、writeFile(path, data)を直接たたけばOKです。ただし、この場合は引数であるpathとdataを渡す必要があるので、直接ではなく別の関数を用意してpathとdataを渡すか、まあ、僕だったらpathくらいはHTML側でdiv要素で保持しておくのかもしれません。やり方はいろいろあるかと。
[ad#ad-1]
スポンサーリンク