New electron client (#256)

This commit is contained in:
Thomas Denney 2016-09-21 06:02:18 +01:00 committed by Peli de Halleux
parent 5d40a48477
commit 527d323ea7
5 changed files with 55 additions and 66 deletions

2
clients/electron/.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
node_modules
projects

View File

@ -0,0 +1,5 @@
# PXT micro:bit Electron app
A very basic wrapper around the web app. To install, copy the contents of this
directory to somewhere outside the main `pxt-microbit` repository. Then run `npm
install && npm start`.

View File

@ -0,0 +1,15 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>code the micro:bit</title>
</head>
<body>
<webview id="webview" style="position:absolute; left:0; top:0; right:0; bottom:0"/>
<script>
const webview = document.getElementById("webview")
const url = `http://localhost:3232/${window.location.hash}`
webview.src = url
</script>
</body>
</html>

View File

@ -1,67 +1,39 @@
const electron = require('electron') const {app, BrowserWindow, Menu} = require('electron')
// Module to control application life.
const app = electron.app
// Module to create native browser window.
const BrowserWindow = electron.BrowserWindow
// pxt toolchain
const pxt = require('pxt-core') const pxt = require('pxt-core')
const path = require('path')
// Keep a global reference of the window object, if you don't, the window will let win
// be closed automatically when the JavaScript object is garbage collected.
let mainWindow
function createWindow() { const cliPath = path.join(process.cwd(), "node_modules/pxt-microbit")
console.log('starting app...')
// Create the browser window. function startServerAndCreateWindow() {
mainWindow = new BrowserWindow({ pxt.mainCli(cliPath, ["serve", "-no-browser"])
width: 800, height: 600, createWindow()
webPreferences: { }
nodeIntegration: false,
} function createWindow () {
win = new BrowserWindow({
width: 800,
height: 600,
title: "code the micro:bit"
}) })
Menu.setApplicationMenu(null)
ts.pxt.Util.debug = true; win.loadURL(`file://${__dirname}/index.html#local_token=${pxt.globalConfig.localToken}`)
pxt.mainCli("C:/gh/pxt-microbit/clients/electron/node_modules/pxt-microbit", ["serve", "-just"]); win.on('closed', () => {
win = null
// no menu
mainWindow.setMenu(null);
// and load the index.html of the app.
mainWindow.loadURL(`http://localhost:3232/#local_token=08ba9b8f-6ccb-4202-296d-28fac7a553d9`)
// Open the DevTools.
mainWindow.webContents.openDevTools()
// Emitted when the window is closed.
mainWindow.on('closed', function () {
// Dereference the window object, usually you would store windows
// in an array if your app supports multi windows, this is the time
// when you should delete the corresponding element.
mainWindow = null
}) })
} }
// This method will be called when Electron has finished app.on('ready', startServerAndCreateWindow)
// initialization and is ready to create browser windows.
// Some APIs can only be used after this event occurs.
app.on('ready', createWindow)
// Quit when all windows are closed. app.on('window-all-closed', () => {
app.on('window-all-closed', function () {
// On OS X it is common for applications and their menu bar
// to stay active until the user quits explicitly with Cmd + Q
if (process.platform !== 'darwin') { if (process.platform !== 'darwin') {
app.quit() app.quit()
} }
}) })
app.on('activate', function () { app.on('activate', () => {
// On OS X it's common to re-create a window in the app when the if (win === null) {
// dock icon is clicked and there are no other windows open.
if (mainWindow === null) {
createWindow() createWindow()
} }
}) })
// In this file you can include the rest of your app's specific main process
// code. You can also put them in separate files and require them here.

View File

@ -1,19 +1,14 @@
{ {
"name": "codethemicrobit", "name" : "code-the-microbit",
"version": "0.1.0", "version" : "1.0.0",
"description": "A Blocks / JavaScript editor for the micro:bit", "description": "Blocks / Javascript editor",
"main": "main.js",
"scripts": {
"start": "electron ."
},
"author": "Microsoft", "author": "Microsoft",
"license": "MIT", "main" : "main.js",
"devDependencies": { "scripts": {
"electron-prebuilt": "^1.2.0" "start": "node_modules/.bin/electron ."
}, },
"dependencies": { "devDependencies": {
"typescript": "1.8.7", "electron": "*",
"pxt-core": "*", "pxt-microbit": "*"
"pxt-microbit": "*"
} }
} }