diff --git a/README.md b/README.md
index e5cecc5..874a6ff 100644
--- a/README.md
+++ b/README.md
@@ -1,35 +1,69 @@
-# Mind_Reader
-The current editor options available lack the level of accessibility that is
-required to allow students who are visually impaired to adequately edit, write,
-and debug code. This tool would extend Visual Studio Code’s existing
-accessibility options to allow everyone, primarily students K-12, to learn
-programming with Lego Mindstorms. Our goal is to provide an enhanced experience
-for students who are visually impaired that is transparent to sighted students.
-This allows for everyone to use the same software solution, whether or not they
-are vision impaired.
+
+
+
+
+
Mind_Reader
+
+
+
+The current editor options available lack the level of accessibility that is
+required to allow people who are visually impaired to adequately write, edit,
+and debug code.
+
+This tool extends Visual Studio Code’s existing
+accessibility options to enable people with a visual impairment to learn
+Python programming with LEGO Mindstorms. Our goal is to:
+
+- provide an accessible experience to people with a visual impairment
+
+- **not** change the editing workflow for people without a visual impairment
+
+## Major Features
+
+- Compatibility with major screen readers:
+
+ - [NVDA](https://www.nvaccess.org/)
+ - [JAWS](https://www.freedomscientific.com/products/software/jaws/)
+ - [Apple VoiceOver](https://support.apple.com/guide/voiceover-guide/welcome/web/)
+
+
+- Play audio alerts for syntax and runtime errors.
+
+- Present a summary of the scope for an individual line of code.
+
+- Save and load programs directly onto the LEGO Hub from within Visual Studio Code
+
+# For Developers
## Dependencies
+
+
- [Git](https://git-scm.com/)
- [Node.js](https://nodejs.org/en/)
-See ["Your First
-Extension"](https://code.visualstudio.com/api/get-started/your-first-extension)
-API page if you need more help.
-
-## Cloning & Setup
+## Development Quick Start
Use the following to set up the extension for development.
- git clone https://github.com/SingleSemesterSnobs/Mind_Reader.git
- cd Mind_Reader
- npm install
+```console
+$ git clone https://github.com/SingleSemesterSnobs/Mind_Reader.git
+$ cd Mind_Reader
+$ npm install
+```
While inside the repository do
- code .
+```console
+$ code .
+```
to open the cloned repository in VS Code.
Then, use "Run > Start Debugging" on the menu bar to start the [Extension
Development Host](https://code.visualstudio.com/api/advanced-topics/extension-host)
(F5 by default).
+
+---
+
+See the Visual Studio Code [getting started](https://code.visualstudio.com/api/get-started/your-first-extension)
+API page if you need more help.
diff --git a/media/dep.svg b/media/dep.svg
new file mode 100644
index 0000000..53e5be5
--- /dev/null
+++ b/media/dep.svg
@@ -0,0 +1,14 @@
+
+
diff --git a/media/logo.png b/media/logo.png
new file mode 100644
index 0000000..63fa136
Binary files /dev/null and b/media/logo.png differ
diff --git a/package.json b/package.json
index b7a7e4f..8fd1068 100644
--- a/package.json
+++ b/package.json
@@ -268,7 +268,26 @@
"markdownDescription": "Specifies the serial port path to use if `#mindreader.connectAutomatically#` is not set."
}
}
- }
+ },
+ "views": {
+ "accessActions": [
+ {
+ "id": "accessActions",
+ "name": "Access Actions",
+ "icon": "media/dep.svg",
+ "contextualTitle": "Accessibility Menu Actions"
+ }
+ ]
+ },
+ "viewsContainers": {
+ "activitybar": [
+ {
+ "id": "accessActions",
+ "title": "Access Actions",
+ "icon": "media/dep.svg"
+ }
+ ]
+ }
},
"scripts": {
"vscode:prepublish": "npm run compile",
diff --git a/src/accessNodeProvider.ts b/src/accessNodeProvider.ts
new file mode 100644
index 0000000..9b0db83
--- /dev/null
+++ b/src/accessNodeProvider.ts
@@ -0,0 +1,47 @@
+import * as vscode from 'vscode';
+
+// list of all actions
+let actions: AccessAction[] = [];
+
+class AccessAction extends vscode.TreeItem {
+ constructor(
+ public readonly label: string,
+ public readonly command: vscode.Command
+ ) {
+ super(label, vscode.TreeItemCollapsibleState.None);
+ }
+};
+
+export default class AccessNodeProvider implements vscode.TreeDataProvider {
+ public getTreeItem(a: AccessAction): vscode.TreeItem {
+ return a;
+ }
+
+ public async getChildren(): Promise {
+ if (actions.length === 0) {
+ // fetch and cache mind-reader options
+ let cmds: string[] = await vscode.commands.getCommands(true); // get non-builtin commands
+ cmds = cmds.filter(x => x.startsWith('mind-reader')); // filter mind-reader commands
+
+ cmds.forEach(c => {
+ let humanReadable = c.replace(/^mind-reader\./, ''); // strip extensions name
+
+ // Convert camelCaseText to Title Case Text
+ humanReadable = humanReadable.replace(/([A-Z])/g, ' $1');
+ humanReadable = humanReadable.charAt(0).toUpperCase() + humanReadable.slice(1);
+
+ // add item to actions
+ actions.push(new AccessAction(
+ humanReadable,
+ {
+ title: humanReadable,
+ command: c,
+ tooltip: humanReadable
+ }
+ ));
+ });
+ }
+
+ return Promise.resolve(actions);
+ }
+}
diff --git a/src/extension.ts b/src/extension.ts
index 5767437..ffeab0f 100644
--- a/src/extension.ts
+++ b/src/extension.ts
@@ -3,6 +3,8 @@ import * as vscode from 'vscode';
import * as pl from './pylex';
import commands from './commands';
+import AccessNodeProvider from './accessNodeProvider'
+
let parser: pl.Parser = new pl.Parser();
export function activate(context: vscode.ExtensionContext) {
@@ -19,6 +21,10 @@ export function activate(context: vscode.ExtensionContext) {
);
context.subscriptions.push(disposable);
});
+
+ let provider = new AccessNodeProvider();
+ vscode.window.registerTreeDataProvider('accessActions', provider);
+
}
export function deactivate() {}