非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

Electronでエディタを作る(ACE使用) ~ローカルへファイル書込み~

      2016/06/14

[ad#top-1]

前回、ローカルにあるSift-JISファイルを読み込む方法を紹介しました。エディタライブラリーACEを使っています。

Electronでエディタを作る(ACE使用) ~iconv-liteでShift-JISファイルを読み込む~

 

今回は書込みです。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;
      }
   });
}

 

出来栄えはこんな感じです。

2

 

saveAsFile()は、いわゆる「名前を付けて保存」なので、毎回どこに保存するかダイアログが現れます。もし上書き保存をしたい場合は、writeFile(path, data)を直接たたけばOKです。ただし、この場合は引数であるpathとdataを渡す必要があるので、直接ではなく別の関数を用意してpathとdataを渡すか、まあ、僕だったらpathくらいはHTML側でdiv要素で保持しておくのかもしれません。やり方はいろいろあるかと。
[ad#ad-1]

スポンサーリンク

 - Electron