/
main.nim
53 lines (41 loc) · 1.19 KB
/
main.nim
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import jsffi
{.emit: """
const electron = require('electron')
const path = require('path')
const url = require('url')
const net = require('net');
""".}
var
electron {. importc, nodecl .}: JsObject
path {. importc, nodecl .}: JsObject
url {. importc, nodecl .}: JsObject
console {. importc, nodecl .}: JsObject
process {.importc, nodecl.}: JsObject
net {.importc, nodecl.}: JsObject
dirname {.importc: "__dirname", nodecl.}: JsObject
let app = electron.app
let browserWindow = electron.BrowserWindow
var mainWindow: JsObject
var client = jsnew net.createConnection(JsObject{ port: 1234 }, proc () =
console.log("Connected to server!")
)
proc createWindow() =
mainWindow = jsnew electron.BrowserWindow(JsObject{width: 800, height: 600})
mainWindow.loadURL(url.format(JsObject{
pathname: dirname.to(cstring) & "/index.html",
protocol: "file".cstring,
slashes: true
}))
mainWindow.on("closed", proc () =
mainWindow = nil
)
client.write "Hello, world\r\n"
app.on("ready", createWindow)
app.on("window-all-closed", proc () =
if process.platform.to(cstring) != "darwin":
app.quit()
)
app.on("activate", proc() =
if mainWindow == nil:
createWindow()
)