Skip to content

Commit cac348e

Browse files
committed
Moved configuration files
1 parent faf8f85 commit cac348e

13 files changed

Lines changed: 126 additions & 47 deletions

File tree

src/control.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
'use strict';
77

88
import { commands, Disposable, ExtensionContext } from 'vscode';
9-
import { Config, configuration } from './util/config';
9+
import { Config, configuration } from './util/configuration/config';
1010
import { Logger } from './util/logger';
1111
import { StatusBarControl } from './util/statusBar';
1212
import { NavTreeView } from './views/navTreeView';

src/extension.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* -------------------------------------------------------------------------------------------- */
55
'use strict';
66
import { ExtensionContext } from 'vscode';
7-
import { Config, configuration } from './util/config';
7+
import { Config, configuration } from './util/configuration/config';
88
import { constants } from './util/constants';
99
import { Logger } from './util/logger';
1010
import { registerCommands } from './util/commands';

src/gcodeUnits.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import { ConfigurationChangeEvent, Disposable, TextDocumentChangeEvent, TextEditor, window, workspace } from 'vscode';
88
import { Control } from './control';
99
import { UtilCommands } from './util/commands/common';
10-
import { configuration } from './util/config';
10+
import { configuration } from './util/configuration/config';
1111
import { Logger } from './util/logger';
1212
import { StatusBar, StatusBarControl } from './util/statusBar';
1313

src/hovers/gcodeHoverControl.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
'use strict';
66

77
import { ConfigurationChangeEvent, Disposable, languages, TextEditor, Uri, window } from 'vscode';
8-
import { configuration } from '../util/config';
8+
import { configuration } from '../util/configuration/config';
99
import { constants } from '../util/constants';
1010
import { Logger } from '../util/logger';
1111
import { GCodeHoverProvider } from './gcodeHoverProvider';
Lines changed: 18 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,11 @@
33
* Licensed under the MIT License. See License.md in the project root for license information.
44
* -------------------------------------------------------------------------------------------- */
55
'use strict';
6-
import {
7-
ConfigurationChangeEvent,
8-
Event,
9-
EventEmitter,
10-
ExtensionContext,
11-
workspace,
12-
WorkspaceConfiguration,
13-
} from 'vscode';
14-
import { constants } from './constants';
15-
import { Logger } from './logger';
6+
import { ConfigurationChangeEvent, ConfigurationScope, Event, EventEmitter, ExtensionContext, workspace } from 'vscode';
7+
import { constants } from '../constants';
8+
import { Logger } from '../logger';
169
export class Config {
17-
private _config: WorkspaceConfiguration;
10+
// private _config: WorkspaceConfiguration;
1811

1912
private _onDidChange = new EventEmitter<ConfigurationChangeEvent>();
2013
get onDidChange(): Event<ConfigurationChangeEvent> {
@@ -28,9 +21,7 @@ export class Config {
2821
// Constructor
2922
constructor() {
3023
// Static reference to configuration
31-
this._config = workspace.getConfiguration(constants.configId);
32-
33-
// Initialize
24+
// this._config = workspace.getConfiguration(constants.configId);
3425
}
3526

3627
private onConfigurationChanged(e: ConfigurationChangeEvent) {
@@ -40,37 +31,35 @@ export class Config {
4031
}
4132

4233
private reloadConfig() {
43-
this._config = workspace.getConfiguration(constants.configId);
34+
// this._config = workspace.getConfiguration(constants.configId);
4435
}
4536

4637
// Get Parameter
47-
getParam(param: string): unknown {
48-
this.reloadConfig();
49-
return this._config.get(param);
38+
getParam<T>(param: string, scope?: ConfigurationScope, defaultValue?: T): T | undefined {
39+
// this.reloadConfig();
40+
return defaultValue === undefined
41+
? workspace.getConfiguration(constants.configId, scope).get<T>(param)
42+
: workspace.getConfiguration(constants.configId, scope).get<T>(param, defaultValue);
5043
}
5144

5245
// Set Parameter
53-
async setParam(param: string, value: any, global = true): Promise<boolean> {
46+
async setParam(param: string, value: any, global = true, scope?: ConfigurationScope): Promise<boolean> {
5447
try {
55-
await this._config.update(param, value, global);
48+
await workspace.getConfiguration(constants.configId, scope).update(param, value, global);
5649
} catch (err) {
5750
Logger.log('Error updating configuration');
5851
return false;
5952
}
6053

61-
this.reloadConfig();
54+
// this.reloadConfig();
6255

63-
if (this._config !== undefined) {
64-
return true;
65-
} else {
66-
return false;
67-
}
56+
return this.getParam(param) === value;
6857
}
6958

70-
changed(e: ConfigurationChangeEvent, ...args: any[]) {
71-
const section: string = <string>args[0];
59+
changed(e: ConfigurationChangeEvent, section: string, scope?: ConfigurationScope): boolean {
60+
// const section: string = <string>args[0];
7261

73-
return e.affectsConfiguration(`${constants.configId}.${section}`);
62+
return e.affectsConfiguration(`${constants.configId}.${section}`, scope) ?? true;
7463
}
7564
}
7665

src/util/configuration/defaults.ts

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
/* ---------------------------------------------------------------------------------------------
2+
* Copyright (c) Applied Eng & Design All rights reserved.
3+
* Licensed under the MIT License. See License.md in the project root for license information.
4+
* -------------------------------------------------------------------------------------------- */
5+
6+
'use strict';
7+
8+
import { LineNumberFrequency } from '../lineNumberer';
9+
import { TraceLevel } from '../logger';
10+
11+
interface GCodeConfiguration {
12+
general: {
13+
machineType: 'Mill' | 'Lathe' | '3D Printer';
14+
15+
hovers: {
16+
enabled: boolean;
17+
};
18+
19+
statusBars: {
20+
enabled: boolean;
21+
alignment: 'left' | 'right';
22+
};
23+
24+
units: 'Auto' | 'Inch' | 'Metric';
25+
26+
outputLevel: TraceLevel;
27+
};
28+
29+
lineNumberer: {
30+
addSpaceAfter: boolean;
31+
frequency: LineNumberFrequency;
32+
ignoreBlank: boolean;
33+
ignoreProgramNumbers: boolean;
34+
};
35+
36+
views: {
37+
maxAutoRefresh: number;
38+
39+
navTree: {
40+
autoRefresh: boolean;
41+
};
42+
43+
stats: {
44+
autoRefresh: boolean;
45+
};
46+
47+
webviews: {
48+
enabled: boolean;
49+
};
50+
};
51+
}
52+
53+
export const defaults: GCodeConfiguration = {
54+
general: {
55+
machineType: 'Mill',
56+
hovers: {
57+
enabled: true,
58+
},
59+
statusBars: {
60+
enabled: true,
61+
alignment: 'left',
62+
},
63+
units: 'Auto',
64+
outputLevel: TraceLevel.Verbose,
65+
},
66+
lineNumberer: {
67+
addSpaceAfter: true,
68+
frequency: LineNumberFrequency.EveryLine,
69+
ignoreBlank: true,
70+
ignoreProgramNumbers: true,
71+
},
72+
views: {
73+
maxAutoRefresh: 10000,
74+
navTree: {
75+
autoRefresh: true,
76+
},
77+
stats: {
78+
autoRefresh: false,
79+
},
80+
webviews: {
81+
enabled: true,
82+
},
83+
},
84+
};

src/util/lineNumberer.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
import { Progress, ProgressLocation, Range, TextEditor, window } from 'vscode';
88

99
export enum LineNumberFrequency {
10-
EveryLine,
11-
AtToolChanges,
10+
EveryLine = 'Every Line',
11+
AtToolChanges = 'At Tool Changes',
1212
}
1313

1414
type LineNumbererOptions = {

src/util/machineType.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
import { ConfigurationChangeEvent, Disposable, Event, EventEmitter, workspace } from 'vscode';
88
import { GReference, MachineTypes } from '@appliedengdesign/gcode-reference';
9-
import { configuration } from './config';
9+
import { configuration } from './configuration/config';
1010
import { Logger } from './logger';
1111
import { StatusBar, StatusBarControl } from './statusBar';
1212
import { Control } from '../control';

src/util/statusBar.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import {
1414
window,
1515
} from 'vscode';
1616
import { UtilCommands } from './commands/common';
17-
import { configuration } from './config';
17+
import { configuration } from './configuration/config';
1818
import { Logger } from './logger';
1919

2020
export interface StatusBars {

src/views/navTreeView.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import {
1212
TextEditorRevealType,
1313
window,
1414
} from 'vscode';
15-
import { configuration } from '../util/config';
15+
import { configuration } from '../util/configuration/config';
1616
import { StatusBar, StatusBarControl } from '../util/statusBar';
1717
import { NavTreeNode } from './nodes/navTreeNode';
1818
import { GView } from './views';
@@ -22,6 +22,7 @@ import { Control } from '../control';
2222
import { Logger } from '../util/logger';
2323
import { ViewCommands } from './viewCommands';
2424
import { Messages } from '../util/messages';
25+
import { defaults } from '../util/configuration/defaults';
2526

2627
const NavTreeViewInfo = {
2728
ViewId: 'gcode.views.navTree',
@@ -55,7 +56,7 @@ export class NavTreeView extends GView<NavTreeNode> {
5556
// Initialize StatusBar
5657
this._statusbar = Control.statusBarController;
5758

58-
this._autoRefresh = <boolean>configuration.getParam(NavTreeViewInfo.Config.AutoRefresh);
59+
this._autoRefresh = configuration.getParam(NavTreeViewInfo.Config.AutoRefresh);
5960

6061
if (this._autoRefresh) {
6162
void this.refresh();
@@ -136,7 +137,7 @@ export class NavTreeView extends GView<NavTreeNode> {
136137

137138
protected onConfigurationChanged(e: ConfigurationChangeEvent) {
138139
if (configuration.changed(e, NavTreeViewInfo.Config.AutoRefresh)) {
139-
this._autoRefresh = <boolean>configuration.getParam(NavTreeViewInfo.Config.AutoRefresh);
140+
this._autoRefresh = configuration.getParam(NavTreeViewInfo.Config.AutoRefresh);
140141
Logger.log(`Nav Tree AutoRefresh: ${this._autoRefresh ? 'Enabled' : 'Disabled'}`);
141142
}
142143
}
@@ -170,7 +171,8 @@ export class NavTreeView extends GView<NavTreeNode> {
170171
protected async refresh(element?: NavTreeNode): Promise<void> {
171172
if (this._editor && this._editor.document) {
172173
if (
173-
this._editor.document.lineCount > <number>configuration.getParam(NavTreeViewInfo.Config.MaxAutoRefresh)
174+
this._editor.document.lineCount >
175+
(configuration.getParam<number>(NavTreeViewInfo.Config.MaxAutoRefresh) ?? defaults.views.maxAutoRefresh)
174176
) {
175177
if (await Messages.showRefreshWarningMessage()) {
176178
if (this.parseTree()) {

0 commit comments

Comments
 (0)