Skip to content

Commit 7f88957

Browse files
committed
gCodeTree implementation
Signed-off-by: Mike Centola <[email protected]>
1 parent 53d5717 commit 7f88957

File tree

4 files changed

+116
-35
lines changed

4 files changed

+116
-35
lines changed

src/extension.ts

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
import * as vscode from 'vscode';
2+
23
import * as util from './util';
34
import * as manifest from './manifest.json';
5+
6+
import { GCodeTreeProvider } from './providers/gcodeTree';
47
//import { getColorization } from './colorization';
58

69
const name = manifest.name;
@@ -14,15 +17,11 @@ export function activate(context: vscode.ExtensionContext) {
1417
conout.show(true);
1518
conout.appendLine(name + " v" + version + " activated.");
1619

17-
// Set Context for Tree View
18-
if (vscode.window.activeTextEditor) {
19-
if (vscode.window.activeTextEditor.document.uri.scheme === 'file') {
20-
const enabled = vscode.window.activeTextEditor.document.languageId === 'gcode';
21-
vscode.commands.executeCommand('setContext', 'gcodeTreeEnabled', enabled);
22-
} else {
23-
vscode.commands.executeCommand('setContext', 'gcodeTreeEnabled', false);
24-
}
25-
}
20+
// Enable Tree View
21+
const gcodeTree = new GCodeTreeProvider(context);
22+
vscode.window.registerTreeDataProvider('gcodeTree', gcodeTree);
23+
24+
conout.appendLine("G-Code Tree View Enabled");
2625

2726
/*
2827

src/providers/gcodeParser.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
2+
export class GCodeParser {
3+
4+
constructor( readonly text: string) {
5+
6+
}
7+
8+
9+
// Comments
10+
private stripComments(line: string): string {
11+
const re1 = new RegExp(/\s*\([^\)]*\)/g); // Remove anything inside the parentheses
12+
const re2 = new RegExp(/\s*;.*/g); // Remove anything after a semi-colon to the end of the line, including preceding spaces
13+
const re3 = new RegExp(/\s+/g);
14+
15+
return (line.replace(re1, '').replace(re2, '').replace(re3, ''));
16+
}
17+
18+
19+
20+
21+
}

src/providers/gcodeTree.ts

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
import * as vscode from 'vscode';
2+
import * as path from 'path';
3+
4+
export class GCodeTreeProvider implements vscode.TreeDataProvider<GCodeTreeNode> {
5+
6+
private _onDidChnageTreeData: vscode.EventEmitter<GCodeTreeNode | undefined> = new vscode.EventEmitter<GCodeTreeNode | undefined>();
7+
readonly onDidChangeTreeData: vscode.Event<GCodeTreeNode | undefined> = this._onDidChnageTreeData.event;
8+
9+
private text: string = '';
10+
private autoRefresh: boolean = true;
11+
12+
constructor(context: vscode.ExtensionContext) {
13+
14+
vscode.window.onDidChangeActiveTextEditor(() => this.onActiveEditorChanged());
15+
16+
17+
this.onActiveEditorChanged();
18+
}
19+
20+
refresh(): void {
21+
this._onDidChnageTreeData.fire();
22+
}
23+
24+
private onActiveEditorChanged(): void {
25+
if (vscode.window.activeTextEditor) {
26+
if (vscode.window.activeTextEditor.document.uri.scheme === 'file') {
27+
const enabled = vscode.window.activeTextEditor.document.languageId === 'gcode';
28+
vscode.commands.executeCommand('setContext', 'gcodeTreeEnabled', enabled);
29+
30+
if (enabled) {
31+
this.refresh();
32+
}
33+
}
34+
} else {
35+
vscode.commands.executeCommand('setContext', 'gcodeTreeEnabled', false);
36+
}
37+
}
38+
39+
private parseTree(): GCodeTreeNode[] {
40+
41+
this.text = '';
42+
let editor = vscode.window.activeTextEditor;
43+
44+
if (editor && editor.document) {
45+
this.text = editor.document.getText();
46+
47+
48+
// TODO PARSE GCODE
49+
} else {
50+
return [];
51+
}
52+
53+
return [];
54+
}
55+
56+
getChildren(element?: GCodeTreeNode): Thenable<GCodeTreeNode[]> {
57+
return Promise.resolve([]);
58+
}
59+
60+
getTreeItem(element: GCodeTreeNode): vscode.TreeItem {
61+
return element;
62+
}
63+
}
64+
65+
export class GCodeTreeNode extends vscode.TreeItem {
66+
67+
constructor(
68+
public readonly label: string,
69+
public readonly collapsibleState: vscode.TreeItemCollapsibleState
70+
) {
71+
super(label, collapsibleState);
72+
}
73+
74+
// TOOL TIP
75+
get tooltip(): string {
76+
return "tooltip";
77+
}
78+
79+
get description(): string {
80+
return "description";
81+
}
82+
83+
iconPath = {
84+
light: path.join(__filename, '..', '..', 'resources', 'light', 'gcode.svg'),
85+
dark: path.join(__filename, '..', '..', 'resources', 'dark', 'gcoode.svg')
86+
};
87+
}

src/tree/gcodeTree.ts

Lines changed: 0 additions & 26 deletions
This file was deleted.

0 commit comments

Comments
 (0)