Skip to content

Commit f25b5d0

Browse files
committed
Update readme
1 parent 7cfa26f commit f25b5d0

File tree

4 files changed

+38
-23
lines changed

4 files changed

+38
-23
lines changed

README.md

+15-23
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,31 @@
11
# Arduino Lab for MicroPython
22

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.
3+
Arduino Lab for MicroPython is a lightweight editor for MicroPython programs, supporting connection with a board, code upload, file transfer and interactive REPL shell.
4+
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.
55

66
## Features
77
- MicroPython's Read Eval Print Loop (REPL)
88
- Enter paste mode
99
- Enter raw repl
1010
- Software reset
11+
- Tab to autocomplete
1112
- File system management (Disk and MicroPython File System)
1213
- Create
1314
- Rename
15+
- Multiple file and folder selection
1416
- Remove
1517
- Upload
1618
- Download
17-
- Text editor with Python syntax highlight
18-
- Code execution controls
19+
- Text editor
20+
- Python syntax highlight and autocomplete
21+
- Multiple tabs
22+
- Rename tabs
23+
- Code execution
1924
- Run what's on text editor
2025
- Stop (keyboard interrupt)
2126
- Soft reset
2227

23-
## Technical
28+
## Technical overview
2429

2530
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`.
2631

@@ -36,33 +41,21 @@ At the root of the repository you will find:
3641

3742
- `/.github`: Github's workflow configuration.
3843
- `/build_resources`: Icons and other assets used during the build process.
39-
- `/scripts`: Scripts executed during the build process.
4044
- `/ui`: Available user interfaces.
4145
- `/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).
46+
- `/preload.js`: Creates Disk, Serial and Window APIs on Electron's main process and exposes it to Electron's renderer process (context bridge).
4347

44-
## Arduino UI
48+
## User interface
4549

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.
47-
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/).
50+
Read more at [`/ui/arduino/README.md`](./ui/arduino/README.md)
5851

5952
## Disk and Serial API
6053

6154
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.
6255

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).
56+
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).
6457

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`
58+
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`
6659

6760
## Running Arduino Lab for MicroPython from source code
6861

@@ -73,7 +66,6 @@ While the serial communication is mediated by `/micropython.js`, the local files
7366

7467
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).
7568

76-
7769
## Trademarks
7870

7971
"Python" and the Python Logo are trademarks of the Python Software Foundation.

ui/arduino/README.md

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Arduino Lab for MicroPython Editor
2+
3+
![Arduino Lab for MicroPython Editor interface](./documents/Screenshot from 2024-04-15 09-48-25.png)
4+
![Arduino Lab for MicroPython Editor interface](./documents/Screenshot from 2024-04-15 09-47-03.png)
5+
6+
This 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.
7+
8+
The dependencies and source code are included manually in the `/ui/arduino/index.html` file. *No installation process* is required for the UI.
9+
10+
The is a standard [choo-choo](https://github.com/choojs/choo) app. It can be useful to learn more about [Choo](https://github.com/choojs/choo) or the [Elm Architecture](https://guide.elm-lang.org/architecture/).
11+
12+
In this folder you will find:
13+
14+
- `/ui/arduino/main.js`: A router deciding which view to load.
15+
- `/ui/arduino/store.js`: A "store" that handles events emitted by the views, change the app state and orchestrate re-rendering.
16+
- `/ui/arduino/libs`: Prebuilt dependencies.
17+
- `/ui/arduino/views`: HTML views, components and elements.
18+
- Views: Page size layouts
19+
- Components: Independent sections that assemble the page layout
20+
- Elements: Thin abstraction on top of HTML tags.
21+
- `/ui/arduino/media`: Icons and image assets.
22+
- `/ui/arduino/documents`: System model and layout.
23+
- `/ui/arduino/helpers.py`: MicroPython functions that enable some of the UI features.
Loading
Loading

0 commit comments

Comments
 (0)