11const electron = require ( 'electron' ) ;
22const url = require ( 'url' ) ;
33const path = require ( 'path' ) ;
4+ const fs = require ( "fs" ) ;
45
5- const { app, BrowserWindow, Menu} = electron ;
6+ const { app, BrowserWindow, Menu, ipcMain , dialog } = electron ;
67
78let appWindow ;
9+ let file_path ;
810
911const appMenuTemplate = [
1012 {
1113 label : 'File' ,
1214 submenu : [
1315 {
14- label : 'Open'
16+ label : 'Open' ,
17+ accelerator :process . platform == 'darwin' ? 'Command+O' : 'Ctrl+O' ,
18+ click ( ) {
19+ file_path = dialog . showOpenDialog ( { filters : [ { name : "Text File" , extensions : 'txt' } ] } , { properties : [ 'openFile' , 'openDirectory' ] } ) ;
20+ fs . readFile ( file_path [ 0 ] , "utf8" , function ( error , data ) {
21+ if ( error ) throw error ;
22+ appWindow . webContents . send ( 'file:load' , data ) ;
23+ } ) ;
24+ }
1525 } ,
1626 {
17- label : 'Save'
27+ label : 'Save' ,
28+ accelerator :process . platform == 'darwin' ? 'Command+S' : 'Ctrl+S' ,
29+ click ( ) {
30+ appWindow . webContents . send ( 'file:save' ) ;
31+ }
1832 } ,
1933 {
2034 label : 'Quit' ,
21- click ( ) {
35+ click ( ) {
2236 app . quit ( ) ;
2337 }
2438 }
@@ -39,4 +53,8 @@ app.on('ready', () => {
3953 Menu . setApplicationMenu ( mainMenu ) ;
4054
4155 appWindow . on ( 'close' , ( ) => app . quit ( ) ) ;
56+ } )
57+
58+ ipcMain . on ( "save" , ( e , data ) => {
59+ fs . writeFileSync ( file_path [ 0 ] , data . split ( "\n" ) . join ( '\r\n' ) ) ;
4260} )
0 commit comments