آغاز کار با الکترون
نویسنده: علی یگانه مقدم
تاریخ: ۱۳۹۵/۰۳/۰۵ ۱:۴۵
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
const electron = require('electron');
const {app,dialog,BrowserWindow,Menu,shell} = electron;
let win;
app.on('ready', function () {
win = new BrowserWindow({width: 800, height: 600});
win.loadURL(`file://${__dirname}/index.html`);
var app_menu=[
{
label:'پرونده',
submenu:[
{
label:'باز کردن',
accelerator:'CmdOrCtrl+O',
click:()=>{
}
},
{
label:'ذخیره',
accelerator:'CmdOrCtrl+S',
click:()=>{
}
}
]
},
{
label:'سیستم',
submenu:[
{
label:'درباره ما',
click:()=>
{
shell.openExternal('https://www.dntips.ir');
}
},
{
label:'خروج',
accelerator:'CmdOrCtrl+X',
click:()=>
{
win=null;
app.quit();
}
}
]
}
]; if(process.platform=="darwin")
{
const app_name=app.getName();
app_menu.unshift({
label:app_name
})
} | ویندوز | win32 حتی اگر 64 بیتی باشد. |
| لینوکس | linux |
| مک | darwin |
| فری بی اس دی | freebsd |
| سولاریس | sunos |
دستو shell در بالا به شما اجازه میدهد با محیط دسکتاپ، یکپارچگی خود
را حفظ کنید و دستوراتی از قبیل باز کردن url، باز کردن یک مسیر دایرکتوری،
باز کردن یک فایل، انتقال فایل به سطل آشغال یا بازیافت و صدای بوق سیستم
(بیپ) را به شما میدهد. مستندات این شیء را در اینجا مطالعه فرمایید.
{
label:'خروج',
accelerator:'CmdOrCtrl+X',
role:'close'
} var menu=Menu.buildFromTemplate(app_menu); Menu.setApplicationMenu(menu);
dialog.showOpenDialog({
title:'باز کردن فایل متنی',
properties: [ 'openFile']//[ 'openFile', 'openDirectory', 'multiSelections' ]
,filters:[
{name:'فایلهای نوشتاری' , extensions:['txt','text']},
{name:'جهت تست' , extensions:['doc','docx']}
]
},
(filename)=>{
if(filename===undefined)
return;
dialog.showMessageBox({title:'پیام اطلاعاتی',type:"info",buttons:['تایید'],message:`the name of file is [${filename}]`});
}); dialog.showSaveDialog({
title:'باز کردن فایل متنی',
properties: [ 'openFile']//[ 'openFile', 'openDirectory', 'multiSelections' ]
,filters:[
{name:'فایلهای نوشتاری' , extensions:['txt','text']}
]
},
(filename)=>{
if(filename===undefined)
return;
}); <!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
Fie Content:<br/>
<textarea id="TextFile" cols="100" rows="50"></textarea>
</body>
</html> dialog.showOpenDialog({
title:'باز کردن فایل متنی',
properties: [ 'openFile']//[ 'openFile', 'openDirectory', 'multiSelections' ]
,filters:[
{name:'فایلهای نوشتاری' , extensions:['txt','text']},
{name:'جهت تست' , extensions:['doc','docx']}
]
},
(filename)=>{
if(filename===undefined)
return;
win.webContents.send('openFile',filename);
// dialog.showMessageBox({title:'پیام اطلاعاتی',type:"info",buttons:['تایید'],message:`the name of file is [${filename}]`});
}); dialog.showSaveDialog({
title:'باز کردن فایل متنی',
properties: [ 'openFile']//[ 'openFile', 'openDirectory', 'multiSelections' ]
,filters:[
{name:'فایلهای نوشتاری' , extensions:['txt','text']}
]
},
(filename)=>{
if(filename===undefined)
return;
win.webContents.send('saveFile',filename);
}); <script>
const {ipcRenderer} = require('electron');
var fs=require('fs');
ipcRenderer.on('openFile', (event, arg) => {
var content= fs.readFileSync(String(arg),'utf8');
document.getElementById("TextFile").value=content;
});
ipcRenderer.on('saveFile', (event, arg) =>{
var content=document.getElementById("TextFile").value;
fs.writeFileSync(String(arg),content,'utf8');
alert('ذخیره شد');
});
</script>
<div id=divEditor >
<div id=editor contenteditable=true spellcheck=true >
تعداد div زیری با هر بار enter کردن افزایش مییابد. پس من برای ریختن فایل درون همچین ساختاری چه کاری باید بکنم (هر خط در یک div)
<div></div>
</div>
</div> ipcRenderer.on("openFile", (event, arg) => {
let content = fs.readFileSync(String(arg), "utf8");
let txt = document.getElementById("editor");
let lineNumberOfFile = countingLineOfFile(content);
// تابع countingLineOfFile هم تعداد خطوط را به درستی بر میگرداند
// باید اول به تعداد خطوط فایل div بسازم
// سپس هر خط درون یک div
txt.innerHTML = content;
});