├── README.md
├── main.js
├── package.json
├── index.html
├── .gitignore
└── script.js
/README.md:
--------------------------------------------------------------------------------
1 | ## Install
2 |
3 | * Electron
4 | * node
5 |
6 | ## Setup
7 |
8 | `npm init`
9 | `main`: `index.js` => `main.js`
10 |
--------------------------------------------------------------------------------
/main.js:
--------------------------------------------------------------------------------
1 | var app = require('app');
2 | var BrowserWindow = require('browser-window');
3 |
4 | app.on('ready', function() {
5 | var mainWindow = new BrowserWindow({width: 800, height: 600});
6 | mainWindow.loadUrl('file://' + __dirname + '/index.html');
7 | });
8 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "electron-md-editor",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "main.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1"
8 | },
9 | "author": "",
10 | "license": "ISC",
11 | "dependencies": {
12 | "marked": "^0.3.3",
13 | "vue": "^0.12.4"
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Markdown Editor
5 |
6 |
20 |
21 |
22 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Created by https://www.gitignore.io
2 |
3 | ### Node ###
4 | # Logs
5 | logs
6 | *.log
7 |
8 | # Runtime data
9 | pids
10 | *.pid
11 | *.seed
12 |
13 | # Directory for instrumented libs generated by jscoverage/JSCover
14 | lib-cov
15 |
16 | # Coverage directory used by tools like istanbul
17 | coverage
18 |
19 | # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
20 | .grunt
21 |
22 | # node-waf configuration
23 | .lock-wscript
24 |
25 | # Compiled binary addons (http://nodejs.org/api/addons.html)
26 | build/Release
27 |
28 | # Dependency directory
29 | # https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git
30 | node_modules
31 |
--------------------------------------------------------------------------------
/script.js:
--------------------------------------------------------------------------------
1 | var Vue = require("vue");
2 | var marked = require("marked");
3 | var fs = require("fs");
4 |
5 | var openFile = null;
6 |
7 | var editor = new Vue({
8 | el: '#editor',
9 | data: {
10 | input: '# hello',
11 | filename: null
12 | },
13 | filters: {
14 | marked: marked
15 | }
16 | });
17 |
18 | var remote = require('remote');
19 | var dialog = remote.require("dialog");
20 |
21 | function openFileDialog() {
22 | dialog.showOpenDialog(function (filenames) {
23 | console.log(filenames);
24 | var filename = filenames[0];
25 | if (filename) {
26 | fs.readFile(filename, "utf8", function (err, data) {
27 | if (err) { throw err; }
28 | editor.$data.filename = filename;
29 | editor.$data.input = data;
30 | });
31 | }
32 | });
33 | }
34 |
35 | function saveFileDialog() {
36 | function save(filename) {
37 | fs.writeFile(filename, editor.$data.input, function (err) {
38 | if (err) { throw err; }
39 | alert("Saved!");
40 | });
41 | }
42 |
43 | if (editor.$data.filename) {
44 | save(editor.$data.filename);
45 | } else {
46 | dialog.showSaveDialog(function (filename) {
47 | if (filename) {
48 | save(filename);
49 | editor.$data.filename = filename;
50 | }
51 | });
52 | }
53 | }
54 |
55 | var Menu = remote.require('menu');
56 | var template = [
57 | {
58 | label: 'Markdown Editor',
59 | submenu: [
60 | {
61 | label: "Quit",
62 | accelerator: "Command+Q",
63 | selector: 'terminate:'
64 | }
65 | ]
66 | },
67 | {
68 | label: 'File',
69 | submenu: [
70 | {
71 | label: "Open",
72 | accelerator: "Command+O",
73 | click: openFileDialog
74 | },
75 | {
76 | label: "Save",
77 | accelerator: "Command+S",
78 | click: saveFileDialog
79 | },
80 | ]
81 | }
82 | ];
83 | menu = Menu.buildFromTemplate(template);
84 | Menu.setApplicationMenu(menu);
85 |
--------------------------------------------------------------------------------