Skip to content

Commit

Permalink
Fix UI for settings override of package presets (#3770)
Browse files Browse the repository at this point in the history
* Fix UI for settings override of package presets

* Fix linter errors
  • Loading branch information
andreeis authored May 20, 2024
1 parent 3fd67f6 commit 6f6f76a
Show file tree
Hide file tree
Showing 5 changed files with 19 additions and 5 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -1738,7 +1738,7 @@
},
{
"command": "cmake.projectStatus.selectPackagePreset",
"when": "view == cmake.projectStatus && cmake:enableFullFeatureSet && viewItem == 'packagePreset'",
"when": "view == cmake.projectStatus && cmake:enableFullFeatureSet && viewItem =~ /packagePreset/",
"group": "inline"
},
{
Expand Down
5 changes: 4 additions & 1 deletion src/drivers/cmakeDriver.ts
Original file line number Diff line number Diff line change
Expand Up @@ -254,7 +254,7 @@ export abstract class CMakeDriver implements vscode.Disposable {
for (const term of this._compileTerms.values()) {
term.dispose();
}
for (const sub of [this._settingsSub, this._argsSub, this._envSub, this._buildArgsSub, this._buildEnvSub, this._testArgsSub, this._testEnvSub, this._packEnvSub, this._generalEnvSub]) {
for (const sub of [this._settingsSub, this._argsSub, this._envSub, this._buildArgsSub, this._buildEnvSub, this._testArgsSub, this._testEnvSub, this._packEnvSub, this._packArgsSub, this._generalEnvSub]) {
sub.dispose();
}
rollbar.invokeAsync(localize('async.disposing.cmake.driver', 'Async disposing CMake driver'), () => this.asyncDispose());
Expand Down Expand Up @@ -1835,6 +1835,9 @@ export abstract class CMakeDriver implements vscode.Disposable {
private readonly _packEnvSub = this.config.onChange('cpackEnvironment', async () => {
await onPackageSettingsChange();
});
private readonly _packArgsSub = this.config.onChange('cpackArgs', async () => {
await onPackageSettingsChange();
});
private readonly _generalEnvSub = this.config.onChange('environment', async () => {
await this.doConfigureSettingsChange();
await onBuildSettingsChange();
Expand Down
9 changes: 7 additions & 2 deletions src/extension.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1014,9 +1014,13 @@ export class ExtensionManager implements vscode.Disposable {
return Array.from(result);
}

viewPackageSettings(): void {
void vscode.commands.executeCommand('workbench.action.openSettings', '@id:cmake.cpackArgs, @id:cmake.cpackEnvironment, @id:cmake.environment');
}

/**
* Show UI to allow the user to select an active kit
*/
* Show UI to allow the user to select an active kit
*/
async selectKit(folder?: vscode.WorkspaceFolder): Promise<boolean> {
if (util.isTestMode()) {
log.trace(localize('selecting.kit.in.test.mode', 'Running CMakeTools in test mode. selectKit is disabled.'));
Expand Down Expand Up @@ -2161,6 +2165,7 @@ async function setup(context: vscode.ExtensionContext, progress?: ProgressHandle
'selectTestPreset',
'viewTestSettings',
'selectPackagePreset',
'viewPackageSettings',
'selectWorkflowPreset',
'selectActiveFolder',
'editKits',
Expand Down
6 changes: 6 additions & 0 deletions src/projectStatus.ts
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,9 @@ export class ProjectStatus {
await runCommand('selectPackagePreset');
await this.refresh(node);
}),
vscode.commands.registerCommand('cmake.projectStatus.viewPackageSettings', async (_node: Node) => {
await runCommand('viewPackageSettings');
}),
vscode.commands.registerCommand('cmake.projectStatus.selectWorkflowPreset', async (node: Node) => {
await runCommand('selectWorkflowPreset');
await this.refresh(node);
Expand Down Expand Up @@ -668,6 +671,9 @@ class PackageNode extends Node {
return this.initialize();
}

async refresh(): Promise<void> {
await this.packagePreset?.refresh();
}
}

class WorkflowNode extends Node {
Expand Down
2 changes: 1 addition & 1 deletion src/ui/util.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,5 @@ export async function onTestSettingsChange(): Promise<void> {

export async function onPackageSettingsChange(): Promise<void> {
await treeDataProvider.refreshPackageNode();
// No updates necessary to status bar, package/workflow presets live in Project Status View only.
getStatusBar()?.updatePackagePresetButton();
}

0 comments on commit 6f6f76a

Please sign in to comment.