You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+21-23
Original file line number
Diff line number
Diff line change
@@ -1,26 +1,37 @@
1
1
# Arduino Lab for MicroPython
2
2
3
-
Arduino Lab for MicroPython is a lightweight editor for MicroPython programs, supporting connection with a board, code upload, file transfer, interactive REPL shell.
4
-
This project is sponsored by Arduino, based on original work by Murilo Polese. This is an experimental pre-release software, please direct any questions only to Github issues.
Arduino Lab for MicroPython is a lightweight editor for MicroPython programs, supporting connection with a board, code upload, file transfer and interactive REPL shell.
10
+
This project is sponsored by Arduino, based on original work by [Murilo Polese](http://www.murilopolese.com). This is an experimental pre-release software, please direct any questions only to Github issues.
5
11
6
12
## Features
7
13
- MicroPython's Read Eval Print Loop (REPL)
8
14
- Enter paste mode
9
15
- Enter raw repl
10
16
- Software reset
17
+
- Tab to autocomplete
11
18
- File system management (Disk and MicroPython File System)
12
19
- Create
13
20
- Rename
21
+
- Multiple file and folder selection
14
22
- Remove
15
23
- Upload
16
24
- Download
17
-
- Text editor with Python syntax highlight
18
-
- Code execution controls
25
+
- Text editor
26
+
- Python syntax highlight and autocomplete
27
+
- Multiple tabs
28
+
- Rename tabs
29
+
- Code execution
19
30
- Run what's on text editor
20
31
- Stop (keyboard interrupt)
21
32
- Soft reset
22
33
23
-
## Technical
34
+
## Technical overview
24
35
25
36
Arduino Lab for MicroPython is an [Electron](https://www.electronjs.org/) app that has its main purpose to communicate over serial with a microprocessor running [MicroPython](https://micropython.org/). All Electron code is at `/index.js`.
26
37
@@ -36,33 +47,21 @@ At the root of the repository you will find:
36
47
37
48
-`/.github`: Github's workflow configuration.
38
49
-`/build_resources`: Icons and other assets used during the build process.
39
-
-`/scripts`: Scripts executed during the build process.
40
50
-`/ui`: Available user interfaces.
41
51
-`/index.js`: Main Electron code.
42
-
-`/preload.js`: Creates Disk and Serial APIs on Electron's main process and exposes it to Electron's renderer process (context bridge).
43
-
44
-
## Arduino UI
52
+
-`/preload.js`: Creates Disk, Serial and Window APIs on Electron's main process and exposes it to Electron's renderer process (context bridge).
45
53
46
-
Default UI is a [choo-choo](https://github.com/choojs/choo) app. It has pre-built dependencies so no build process is required for the interface.
54
+
## User interface
47
55
48
-
The dependencies and source code are included manually in the `/ui/arduino/index.html` file.
49
-
50
-
The app is a standard [choo-choo](https://github.com/choojs/choo) app and it has:
51
-
52
-
-`/ui/arduino/app.js`: A router deciding which view to load.
53
-
-`/ui/arduino/components`: HTML templates and components.
54
-
-`/ui/arduino/store.js`: A "store" that handles events emitted by the views, change the app state and orchestrate re-rendering.
55
-
-`/ui/arduino/libs`: Prebuilt dependencies.
56
-
57
-
It can be useful to learn more about [Choo](https://github.com/choojs/choo) or the [Elm Architecture](https://guide.elm-lang.org/architecture/).
56
+
Read more at [`/ui/arduino/README.md`](./ui/arduino/README.md)
58
57
59
58
## Disk and Serial API
60
59
61
60
In order for the UI code to be independent of Electron code, there is an API defined at `/preload.js` that describes all the allowed operations.
62
61
63
-
There are 2 main operation "channels": Serial communication and local Filesystem operations. Both channels offer methods that always return promises and are used mostly through [`async`/`await`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function).
62
+
There are 3 main operation "channels": Serial communication, local filesystem and window operations. These channels offer methods that should always return promises and are used mostly through [`async`/`await`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function).
64
63
65
-
While the serial communication is mediated by `/micropython.js`, the local filesystem operations are done through Electron's `ipcRenderer` calls. The handlers for these calls are defined at `/index.js`
64
+
While the serial communication is mediated by `/micropython.js`, the local filesystem and window operations are done through Electron's `ipcRenderer` calls. The handlers for these calls are defined at `/index.js`
66
65
67
66
## Running Arduino Lab for MicroPython from source code
68
67
@@ -73,7 +72,6 @@ While the serial communication is mediated by `/micropython.js`, the local files
73
72
74
73
Some changes on the Electron code will require reopening the app but all UI changes will only require refreshing the window (ctrl-r/cmd-r).
75
74
76
-
77
75
## Trademarks
78
76
79
77
"Python" and the Python Logo are trademarks of the Python Software Foundation.
0 commit comments