@codingame/monaco-vscode-user-data-profile-service-override 24.2.0 → 25.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -2
- package/vscode/src/vs/workbench/contrib/userDataProfile/browser/userDataProfile.d.ts +1 -0
- package/vscode/src/vs/workbench/contrib/userDataProfile/browser/userDataProfile.js +44 -24
- package/vscode/src/vs/workbench/contrib/userDataProfile/browser/userDataProfileActions.js +3 -3
- package/vscode/src/vs/workbench/contrib/userDataProfile/browser/userDataProfilesEditor.js +79 -79
- package/vscode/src/vs/workbench/contrib/userDataProfile/browser/userDataProfilesEditorModel.js +26 -26
- package/vscode/src/vs/workbench/services/userDataProfile/browser/extensionsResource.js +5 -5
- package/vscode/src/vs/workbench/services/userDataProfile/browser/globalStateResource.js +1 -1
- package/vscode/src/vs/workbench/services/userDataProfile/browser/keybindingsResource.js +1 -1
- package/vscode/src/vs/workbench/services/userDataProfile/browser/mcpProfileResource.js +1 -1
- package/vscode/src/vs/workbench/services/userDataProfile/browser/settingsResource.js +1 -1
- package/vscode/src/vs/workbench/services/userDataProfile/browser/snippetsResource.js +2 -2
- package/vscode/src/vs/workbench/services/userDataProfile/browser/tasksResource.js +1 -1
- package/vscode/src/vs/workbench/services/userDataProfile/browser/userDataProfileImportExportService.js +40 -40
- package/vscode/src/vs/workbench/services/userDataProfile/browser/userDataProfileManagement.js +8 -8
|
@@ -75,9 +75,9 @@ import { Orientation } from '@codingame/monaco-vscode-api/vscode/vs/base/browser
|
|
|
75
75
|
|
|
76
76
|
var UserDataProfilesEditor_1, ExistingProfileResourceTreeRenderer_1, NewProfileResourceTreeRenderer_1, ProfileResourceChildTreeItemRenderer_1, WorkspaceUriHostColumnRenderer_1, WorkspaceUriPathColumnRenderer_1, WorkspaceUriActionsColumnRenderer_1, UserDataProfilesEditorInput_1;
|
|
77
77
|
registerCss(userDataProfilesEditor);
|
|
78
|
-
const editIcon = registerIcon('profiles-editor-edit-folder', Codicon.edit, ( localize(
|
|
79
|
-
const removeIcon = registerIcon('profiles-editor-remove-folder', Codicon.close, ( localize(
|
|
80
|
-
const profilesSashBorder = registerColor('profiles.sashBorder', PANEL_BORDER, ( localize(
|
|
78
|
+
const editIcon = registerIcon('profiles-editor-edit-folder', Codicon.edit, ( localize(12950, 'Icon for the edit folder icon in the profiles editor.')));
|
|
79
|
+
const removeIcon = registerIcon('profiles-editor-remove-folder', Codicon.close, ( localize(12951, 'Icon for the remove folder icon in the profiles editor.')));
|
|
80
|
+
const profilesSashBorder = registerColor('profiles.sashBorder', PANEL_BORDER, ( localize(12952, "The color of the Profiles editor splitview sash border.")));
|
|
81
81
|
const listStyles = getListStyles({
|
|
82
82
|
listActiveSelectionBackground: editorBackground,
|
|
83
83
|
listActiveSelectionForeground: foreground,
|
|
@@ -173,7 +173,7 @@ let UserDataProfilesEditor = class UserDataProfilesEditor extends EditorPane {
|
|
|
173
173
|
return profileElement?.name ?? '';
|
|
174
174
|
},
|
|
175
175
|
getWidgetAriaLabel() {
|
|
176
|
-
return localize(
|
|
176
|
+
return localize(12953, "Profiles");
|
|
177
177
|
}
|
|
178
178
|
},
|
|
179
179
|
openOnSingleClick: true,
|
|
@@ -194,12 +194,12 @@ let UserDataProfilesEditor = class UserDataProfilesEditor extends EditorPane {
|
|
|
194
194
|
getActions: () => {
|
|
195
195
|
const actions = [];
|
|
196
196
|
if (this.templates.length) {
|
|
197
|
-
actions.push(( new SubmenuAction('from.template', ( localize(
|
|
197
|
+
actions.push(( new SubmenuAction('from.template', ( localize(12954, "From Template")), this.getCreateFromTemplateActions())));
|
|
198
198
|
actions.push(( new Separator()));
|
|
199
199
|
}
|
|
200
200
|
actions.push(toAction({
|
|
201
201
|
id: 'importProfile',
|
|
202
|
-
label: ( localize(
|
|
202
|
+
label: ( localize(12955, "Import Profile...")),
|
|
203
203
|
run: () => this.importProfile()
|
|
204
204
|
}));
|
|
205
205
|
return actions;
|
|
@@ -210,7 +210,7 @@ let UserDataProfilesEditor = class UserDataProfilesEditor extends EditorPane {
|
|
|
210
210
|
supportIcons: true,
|
|
211
211
|
...defaultButtonStyles
|
|
212
212
|
})));
|
|
213
|
-
button.label = ( localize(
|
|
213
|
+
button.label = ( localize(12956, "New Profile"));
|
|
214
214
|
this._register(button.onDidClick(e => this.createNewProfile()));
|
|
215
215
|
}
|
|
216
216
|
getCreateFromTemplateActions() {
|
|
@@ -255,17 +255,17 @@ let UserDataProfilesEditor = class UserDataProfilesEditor extends EditorPane {
|
|
|
255
255
|
const actions = [];
|
|
256
256
|
actions.push(toAction({
|
|
257
257
|
id: 'newProfile',
|
|
258
|
-
label: ( localize(
|
|
258
|
+
label: ( localize(12956, "New Profile")),
|
|
259
259
|
run: () => this.createNewProfile()
|
|
260
260
|
}));
|
|
261
261
|
const templateActions = this.getCreateFromTemplateActions();
|
|
262
262
|
if (templateActions.length) {
|
|
263
|
-
actions.push(( new SubmenuAction('from.template', ( localize(
|
|
263
|
+
actions.push(( new SubmenuAction('from.template', ( localize(12957, "New Profile From Template")), templateActions)));
|
|
264
264
|
}
|
|
265
265
|
actions.push(( new Separator()));
|
|
266
266
|
actions.push(toAction({
|
|
267
267
|
id: 'importProfile',
|
|
268
|
-
label: ( localize(
|
|
268
|
+
label: ( localize(12955, "Import Profile...")),
|
|
269
269
|
run: () => this.importProfile()
|
|
270
270
|
}));
|
|
271
271
|
return actions;
|
|
@@ -276,13 +276,13 @@ let UserDataProfilesEditor = class UserDataProfilesEditor extends EditorPane {
|
|
|
276
276
|
const updateQuickPickItems = (value) => {
|
|
277
277
|
const quickPickItems = [];
|
|
278
278
|
if (value) {
|
|
279
|
-
quickPickItems.push({ label: quickPick.value, description: ( localize(
|
|
279
|
+
quickPickItems.push({ label: quickPick.value, description: ( localize(12958, "Import from URL")) });
|
|
280
280
|
}
|
|
281
|
-
quickPickItems.push({ label: ( localize(
|
|
281
|
+
quickPickItems.push({ label: ( localize(12959, "Select File...")) });
|
|
282
282
|
quickPick.items = quickPickItems;
|
|
283
283
|
};
|
|
284
|
-
quickPick.title = ( localize(
|
|
285
|
-
quickPick.placeholder = ( localize(
|
|
284
|
+
quickPick.title = ( localize(12960, "Import from Profile Template..."));
|
|
285
|
+
quickPick.placeholder = ( localize(12961, "Provide Profile Template URL"));
|
|
286
286
|
quickPick.ignoreFocusOut = true;
|
|
287
287
|
disposables.add(quickPick.onDidChangeValue(updateQuickPickItems));
|
|
288
288
|
updateQuickPickItems();
|
|
@@ -317,7 +317,7 @@ let UserDataProfilesEditor = class UserDataProfilesEditor extends EditorPane {
|
|
|
317
317
|
canSelectFiles: true,
|
|
318
318
|
canSelectMany: false,
|
|
319
319
|
filters: PROFILE_FILTER,
|
|
320
|
-
title: ( localize(
|
|
320
|
+
title: ( localize(12962, "Select Profile Template File")),
|
|
321
321
|
});
|
|
322
322
|
if (!profileLocation) {
|
|
323
323
|
return null;
|
|
@@ -394,7 +394,7 @@ let ProfileElementRenderer = class ProfileElementRenderer {
|
|
|
394
394
|
const label = append(container, $('.profile-list-item-label'));
|
|
395
395
|
const dirty = append(container, $(`span${ThemeIcon.asCSSSelector(Codicon.circleFilled)}`));
|
|
396
396
|
const description = append(container, $('.profile-list-item-description'));
|
|
397
|
-
append(description, $(`span${ThemeIcon.asCSSSelector(Codicon.check)}`), $('span', undefined, ( localize(
|
|
397
|
+
append(description, $(`span${ThemeIcon.asCSSSelector(Codicon.check)}`), $('span', undefined, ( localize(12963, "Active"))));
|
|
398
398
|
const actionsContainer = append(container, $('.profile-tree-item-actions-container'));
|
|
399
399
|
const actionBar = disposables.add(this.instantiationService.createInstance(WorkbenchToolBar, actionsContainer, {
|
|
400
400
|
hoverDelegate: disposables.add(createInstantHoverDelegate()),
|
|
@@ -734,17 +734,17 @@ class AbstractProfileResourceTreeRenderer extends Disposable {
|
|
|
734
734
|
getResourceTypeTitle(resourceType) {
|
|
735
735
|
switch (resourceType) {
|
|
736
736
|
case ProfileResourceType.Settings:
|
|
737
|
-
return localize(
|
|
737
|
+
return localize(12964, "Settings");
|
|
738
738
|
case ProfileResourceType.Keybindings:
|
|
739
|
-
return localize(
|
|
739
|
+
return localize(12965, "Keyboard Shortcuts");
|
|
740
740
|
case ProfileResourceType.Snippets:
|
|
741
|
-
return localize(
|
|
741
|
+
return localize(12966, "Snippets");
|
|
742
742
|
case ProfileResourceType.Tasks:
|
|
743
|
-
return localize(
|
|
743
|
+
return localize(12967, "Tasks");
|
|
744
744
|
case ProfileResourceType.Mcp:
|
|
745
|
-
return localize(
|
|
745
|
+
return localize(12968, "MCP Servers");
|
|
746
746
|
case ProfileResourceType.Extensions:
|
|
747
|
-
return localize(
|
|
747
|
+
return localize(12969, "Extensions");
|
|
748
748
|
}
|
|
749
749
|
return '';
|
|
750
750
|
}
|
|
@@ -773,18 +773,18 @@ let ProfileNameRenderer = class ProfileNameRenderer extends ProfilePropertyRende
|
|
|
773
773
|
const elementDisposables = disposables.add(( new DisposableStore()));
|
|
774
774
|
let profileElement;
|
|
775
775
|
const nameContainer = append(parent, $('.profile-row-container'));
|
|
776
|
-
append(nameContainer, $('.profile-label-element', undefined, ( localize(
|
|
776
|
+
append(nameContainer, $('.profile-label-element', undefined, ( localize(12970, "Name"))));
|
|
777
777
|
const nameInput = disposables.add(( new InputBox(nameContainer, this.contextViewService, {
|
|
778
778
|
inputBoxStyles: getInputBoxStyle({
|
|
779
779
|
inputBorder: settingsTextInputBorder
|
|
780
780
|
}),
|
|
781
|
-
ariaLabel: ( localize(
|
|
782
|
-
placeholder: ( localize(
|
|
781
|
+
ariaLabel: ( localize(12971, "Profile Name")),
|
|
782
|
+
placeholder: ( localize(12971, "Profile Name")),
|
|
783
783
|
validationOptions: {
|
|
784
784
|
validation: (value) => {
|
|
785
785
|
if (!value) {
|
|
786
786
|
return {
|
|
787
|
-
content: ( localize(
|
|
787
|
+
content: ( localize(12972, "Profile name is required and must be a non-empty value.")),
|
|
788
788
|
type: MessageType.WARNING
|
|
789
789
|
};
|
|
790
790
|
}
|
|
@@ -798,7 +798,7 @@ let ProfileNameRenderer = class ProfileNameRenderer extends ProfilePropertyRende
|
|
|
798
798
|
value = value.trim();
|
|
799
799
|
if (initialName !== value && ( this.userDataProfilesService.profiles.some(p => !p.isTransient && p.name === value))) {
|
|
800
800
|
return {
|
|
801
|
-
content: ( localize(
|
|
801
|
+
content: ( localize(12973, "Profile with name {0} already exists.", value)),
|
|
802
802
|
type: MessageType.WARNING
|
|
803
803
|
};
|
|
804
804
|
}
|
|
@@ -828,10 +828,10 @@ let ProfileNameRenderer = class ProfileNameRenderer extends ProfilePropertyRende
|
|
|
828
828
|
nameInput.enable();
|
|
829
829
|
}
|
|
830
830
|
if (isDefaultProfile) {
|
|
831
|
-
nameInput.setTooltip(( localize(
|
|
831
|
+
nameInput.setTooltip(( localize(12974, "Name cannot be changed for the default profile")));
|
|
832
832
|
}
|
|
833
833
|
else {
|
|
834
|
-
nameInput.setTooltip(( localize(
|
|
834
|
+
nameInput.setTooltip(( localize(12971, "Profile Name")));
|
|
835
835
|
}
|
|
836
836
|
};
|
|
837
837
|
return {
|
|
@@ -869,9 +869,9 @@ let ProfileIconRenderer = class ProfileIconRenderer extends ProfilePropertyRende
|
|
|
869
869
|
const elementDisposables = disposables.add(( new DisposableStore()));
|
|
870
870
|
let profileElement;
|
|
871
871
|
const iconContainer = append(parent, $('.profile-row-container'));
|
|
872
|
-
append(iconContainer, $('.profile-label-element', undefined, ( localize(
|
|
872
|
+
append(iconContainer, $('.profile-label-element', undefined, ( localize(12975, "Icon"))));
|
|
873
873
|
const iconValueContainer = append(iconContainer, $('.profile-icon-container'));
|
|
874
|
-
const iconElement = append(iconValueContainer, $(`${ThemeIcon.asCSSSelector(DEFAULT_ICON)}`, { 'tabindex': '0', 'role': 'button', 'aria-label': ( localize(
|
|
874
|
+
const iconElement = append(iconValueContainer, $(`${ThemeIcon.asCSSSelector(DEFAULT_ICON)}`, { 'tabindex': '0', 'role': 'button', 'aria-label': ( localize(12976, "Profile Icon")) }));
|
|
875
875
|
const iconHover = disposables.add(this.hoverService.setupManagedHover(this.hoverDelegate, iconElement, ''));
|
|
876
876
|
const iconSelectBox = disposables.add(this.instantiationService.createInstance(WorkbenchIconSelectBox, { icons: ICONS, inputBoxStyles: defaultInputBoxStyles }));
|
|
877
877
|
let hoverWidget;
|
|
@@ -930,14 +930,14 @@ let ProfileIconRenderer = class ProfileIconRenderer extends ProfilePropertyRende
|
|
|
930
930
|
profileElement.root.icon = selectedIcon.id;
|
|
931
931
|
}
|
|
932
932
|
}));
|
|
933
|
-
append(iconValueContainer, $('.profile-description-element', undefined, ( localize(
|
|
933
|
+
append(iconValueContainer, $('.profile-description-element', undefined, ( localize(12977, "Profile icon to be shown in the activity bar"))));
|
|
934
934
|
const renderIcon = (profileElement) => {
|
|
935
935
|
if (profileElement?.root instanceof UserDataProfileElement && profileElement.root.profile.isDefault) {
|
|
936
936
|
iconValueContainer.classList.add('disabled');
|
|
937
|
-
iconHover.update(( localize(
|
|
937
|
+
iconHover.update(( localize(12978, "Icon cannot be changed for the default profile")));
|
|
938
938
|
}
|
|
939
939
|
else {
|
|
940
|
-
iconHover.update(( localize(
|
|
940
|
+
iconHover.update(( localize(12979, "Click to change icon")));
|
|
941
941
|
iconValueContainer.classList.remove('disabled');
|
|
942
942
|
}
|
|
943
943
|
if (profileElement.root.icon) {
|
|
@@ -977,9 +977,9 @@ let UseForCurrentWindowPropertyRenderer = class UseForCurrentWindowPropertyRende
|
|
|
977
977
|
const elementDisposables = disposables.add(( new DisposableStore()));
|
|
978
978
|
let profileElement;
|
|
979
979
|
const useForCurrentWindowContainer = append(parent, $('.profile-row-container'));
|
|
980
|
-
append(useForCurrentWindowContainer, $('.profile-label-element', undefined, ( localize(
|
|
980
|
+
append(useForCurrentWindowContainer, $('.profile-label-element', undefined, ( localize(12980, "Use for Current Window"))));
|
|
981
981
|
const useForCurrentWindowValueContainer = append(useForCurrentWindowContainer, $('.profile-use-for-current-container'));
|
|
982
|
-
const useForCurrentWindowTitle = ( localize(
|
|
982
|
+
const useForCurrentWindowTitle = ( localize(12981, "Use this profile for the current window"));
|
|
983
983
|
const useForCurrentWindowCheckbox = disposables.add(( new Checkbox(useForCurrentWindowTitle, false, defaultCheckboxStyles)));
|
|
984
984
|
append(useForCurrentWindowValueContainer, useForCurrentWindowCheckbox.domNode);
|
|
985
985
|
const useForCurrentWindowLabel = append(useForCurrentWindowValueContainer, $('.profile-description-element', undefined, useForCurrentWindowTitle));
|
|
@@ -1029,9 +1029,9 @@ class UseAsDefaultProfileRenderer extends ProfilePropertyRenderer {
|
|
|
1029
1029
|
const elementDisposables = disposables.add(( new DisposableStore()));
|
|
1030
1030
|
let profileElement;
|
|
1031
1031
|
const useAsDefaultProfileContainer = append(parent, $('.profile-row-container'));
|
|
1032
|
-
append(useAsDefaultProfileContainer, $('.profile-label-element', undefined, ( localize(
|
|
1032
|
+
append(useAsDefaultProfileContainer, $('.profile-label-element', undefined, ( localize(12982, "Use for New Windows"))));
|
|
1033
1033
|
const useAsDefaultProfileValueContainer = append(useAsDefaultProfileContainer, $('.profile-use-as-default-container'));
|
|
1034
|
-
const useAsDefaultProfileTitle = ( localize(
|
|
1034
|
+
const useAsDefaultProfileTitle = ( localize(12983, "Use this profile as the default for new windows"));
|
|
1035
1035
|
const useAsDefaultProfileCheckbox = disposables.add(( new Checkbox(useAsDefaultProfileTitle, false, defaultCheckboxStyles)));
|
|
1036
1036
|
append(useAsDefaultProfileValueContainer, useAsDefaultProfileCheckbox.domNode);
|
|
1037
1037
|
const useAsDefaultProfileLabel = append(useAsDefaultProfileValueContainer, $('.profile-description-element', undefined, useAsDefaultProfileTitle));
|
|
@@ -1078,11 +1078,11 @@ let CopyFromProfileRenderer = class CopyFromProfileRenderer extends ProfilePrope
|
|
|
1078
1078
|
const elementDisposables = disposables.add(( new DisposableStore()));
|
|
1079
1079
|
let profileElement;
|
|
1080
1080
|
const copyFromContainer = append(parent, $('.profile-row-container.profile-copy-from-container'));
|
|
1081
|
-
append(copyFromContainer, $('.profile-label-element', undefined, ( localize(
|
|
1082
|
-
append(copyFromContainer, $('.profile-description-element', undefined, ( localize(
|
|
1081
|
+
append(copyFromContainer, $('.profile-label-element', undefined, ( localize(12984, "Copy from"))));
|
|
1082
|
+
append(copyFromContainer, $('.profile-description-element', undefined, ( localize(12985, "Select the profile source from which you want to copy contents"))));
|
|
1083
1083
|
const copyFromSelectBox = disposables.add(this.instantiationService.createInstance(SelectBox, [], 0, this.contextViewService, defaultSelectBoxStyles, {
|
|
1084
1084
|
useCustomDrawn: true,
|
|
1085
|
-
ariaLabel: ( localize(
|
|
1085
|
+
ariaLabel: ( localize(12986, "Copy profile from")),
|
|
1086
1086
|
}));
|
|
1087
1087
|
copyFromSelectBox.render(append(copyFromContainer, $('.profile-select-container')));
|
|
1088
1088
|
const render = (profileElement, copyFromOptions) => {
|
|
@@ -1125,19 +1125,19 @@ let CopyFromProfileRenderer = class CopyFromProfileRenderer extends ProfilePrope
|
|
|
1125
1125
|
}
|
|
1126
1126
|
getCopyFromOptions(profileElement) {
|
|
1127
1127
|
const copyFromOptions = [];
|
|
1128
|
-
copyFromOptions.push({ text: ( localize(
|
|
1128
|
+
copyFromOptions.push({ text: ( localize(12987, "None")) });
|
|
1129
1129
|
for (const [copyFromTemplate, name] of profileElement.copyFromTemplates) {
|
|
1130
1130
|
if (!( this.templates.some(template => this.uriIdentityService.extUri.isEqual(( URI.parse(template.url)), copyFromTemplate)))) {
|
|
1131
1131
|
copyFromOptions.push({ text: `${name} (${basename(copyFromTemplate)})`, id: ( copyFromTemplate.toString()), source: copyFromTemplate });
|
|
1132
1132
|
}
|
|
1133
1133
|
}
|
|
1134
1134
|
if (this.templates.length) {
|
|
1135
|
-
copyFromOptions.push({ ...SeparatorSelectOption, decoratorRight: ( localize(
|
|
1135
|
+
copyFromOptions.push({ ...SeparatorSelectOption, decoratorRight: ( localize(12988, "Profile Templates")) });
|
|
1136
1136
|
for (const template of this.templates) {
|
|
1137
1137
|
copyFromOptions.push({ text: template.name, id: template.url, source: ( URI.parse(template.url)) });
|
|
1138
1138
|
}
|
|
1139
1139
|
}
|
|
1140
|
-
copyFromOptions.push({ ...SeparatorSelectOption, decoratorRight: ( localize(
|
|
1140
|
+
copyFromOptions.push({ ...SeparatorSelectOption, decoratorRight: ( localize(12989, "Existing Profiles")) });
|
|
1141
1141
|
for (const profile of this.userDataProfilesService.profiles) {
|
|
1142
1142
|
if (!profile.isTransient) {
|
|
1143
1143
|
copyFromOptions.push({ text: profile.name, id: profile.id, source: profile });
|
|
@@ -1169,11 +1169,11 @@ let ContentsProfileRenderer = class ContentsProfileRenderer extends ProfilePrope
|
|
|
1169
1169
|
const elementDisposables = disposables.add(( new DisposableStore()));
|
|
1170
1170
|
let profileElement;
|
|
1171
1171
|
const configureRowContainer = append(parent, $('.profile-row-container'));
|
|
1172
|
-
append(configureRowContainer, $('.profile-label-element', undefined, ( localize(
|
|
1172
|
+
append(configureRowContainer, $('.profile-label-element', undefined, ( localize(12990, "Contents"))));
|
|
1173
1173
|
const contentsDescriptionElement = append(configureRowContainer, $('.profile-description-element'));
|
|
1174
1174
|
const contentsTreeHeader = append(configureRowContainer, $('.profile-content-tree-header'));
|
|
1175
|
-
const optionsLabel = $('.options-header', undefined, $('span', undefined, ( localize(
|
|
1176
|
-
append(contentsTreeHeader, $(''), $('', undefined, ( localize(
|
|
1175
|
+
const optionsLabel = $('.options-header', undefined, $('span', undefined, ( localize(12991, "Source"))));
|
|
1176
|
+
append(contentsTreeHeader, $(''), $('', undefined, ( localize(12990, "Contents"))), optionsLabel, $(''));
|
|
1177
1177
|
const delegate = ( new ProfileContentTreeElementDelegate());
|
|
1178
1178
|
const profilesContentTree = this.profilesContentTree = disposables.add(this.instantiationService.createInstance((WorkbenchAsyncDataTree), 'ProfileEditor-ContentsTree', append(configureRowContainer, $('.profile-content-tree.file-icon-themable-tree.show-file-icons')), delegate, [
|
|
1179
1179
|
this.instantiationService.createInstance(ExistingProfileResourceTreeRenderer),
|
|
@@ -1245,27 +1245,27 @@ let ContentsProfileRenderer = class ContentsProfileRenderer extends ProfilePrope
|
|
|
1245
1245
|
clearNode(contentsDescriptionElement);
|
|
1246
1246
|
const markdown = ( new MarkdownString());
|
|
1247
1247
|
if (element.root instanceof UserDataProfileElement && element.root.profile.isDefault) {
|
|
1248
|
-
markdown.appendMarkdown(( localize(
|
|
1248
|
+
markdown.appendMarkdown(( localize(12992, "Browse contents of this profile\n")));
|
|
1249
1249
|
}
|
|
1250
1250
|
else {
|
|
1251
|
-
markdown.appendMarkdown(( localize(
|
|
1251
|
+
markdown.appendMarkdown(( localize(12993, "Configure source of contents for this profile\n")));
|
|
1252
1252
|
if (element.root instanceof NewProfileElement) {
|
|
1253
1253
|
const copyFromName = element.root.getCopyFromName();
|
|
1254
1254
|
const optionName = copyFromName === this.userDataProfilesService.defaultProfile.name
|
|
1255
|
-
? ( localize(
|
|
1255
|
+
? ( localize(12994, "{0} (Copy)", copyFromName))
|
|
1256
1256
|
: copyFromName;
|
|
1257
1257
|
if (optionName) {
|
|
1258
1258
|
markdown
|
|
1259
1259
|
.appendMarkdown(( localize(
|
|
1260
|
-
|
|
1260
|
+
12995,
|
|
1261
1261
|
"- *{0}:* Copy contents from the {1} profile\n",
|
|
1262
1262
|
optionName,
|
|
1263
1263
|
copyFromName
|
|
1264
1264
|
)));
|
|
1265
1265
|
}
|
|
1266
1266
|
markdown
|
|
1267
|
-
.appendMarkdown(( localize(
|
|
1268
|
-
.appendMarkdown(( localize(
|
|
1267
|
+
.appendMarkdown(( localize(12996, "- *Default:* Use contents from the Default profile\n")))
|
|
1268
|
+
.appendMarkdown(( localize(12997, "- *None:* Create empty contents\n")));
|
|
1269
1269
|
}
|
|
1270
1270
|
}
|
|
1271
1271
|
append(contentsDescriptionElement, elementDisposables.add(renderMarkdown(markdown)).element);
|
|
@@ -1326,7 +1326,7 @@ let ProfileWorkspacesRenderer = class ProfileWorkspacesRenderer extends ProfileP
|
|
|
1326
1326
|
const elementDisposables = disposables.add(( new DisposableStore()));
|
|
1327
1327
|
let profileElement;
|
|
1328
1328
|
const profileWorkspacesRowContainer = append(parent, $('.profile-row-container'));
|
|
1329
|
-
append(profileWorkspacesRowContainer, $('.profile-label-element', undefined, ( localize(
|
|
1329
|
+
append(profileWorkspacesRowContainer, $('.profile-label-element', undefined, ( localize(12998, "Folders & Workspaces"))));
|
|
1330
1330
|
const profileWorkspacesDescriptionElement = append(profileWorkspacesRowContainer, $('.profile-description-element'));
|
|
1331
1331
|
const workspacesTableContainer = append(profileWorkspacesRowContainer, $('.profile-associations-table'));
|
|
1332
1332
|
const table = this.workspacesTable = disposables.add(this.instantiationService.createInstance((WorkbenchTable), 'ProfileEditor-AssociationsTable', workspacesTableContainer, new class {
|
|
@@ -1345,14 +1345,14 @@ let ProfileWorkspacesRenderer = class ProfileWorkspacesRenderer extends ProfileP
|
|
|
1345
1345
|
project(row) { return row; },
|
|
1346
1346
|
},
|
|
1347
1347
|
{
|
|
1348
|
-
label: ( localize(
|
|
1348
|
+
label: ( localize(12999, "Host")),
|
|
1349
1349
|
tooltip: '',
|
|
1350
1350
|
weight: 2,
|
|
1351
1351
|
templateId: WorkspaceUriHostColumnRenderer.TEMPLATE_ID,
|
|
1352
1352
|
project(row) { return row; },
|
|
1353
1353
|
},
|
|
1354
1354
|
{
|
|
1355
|
-
label: ( localize(
|
|
1355
|
+
label: ( localize(13000, "Path")),
|
|
1356
1356
|
tooltip: '',
|
|
1357
1357
|
weight: 7,
|
|
1358
1358
|
templateId: WorkspaceUriPathColumnRenderer.TEMPLATE_ID,
|
|
@@ -1381,16 +1381,16 @@ let ProfileWorkspacesRenderer = class ProfileWorkspacesRenderer extends ProfileP
|
|
|
1381
1381
|
getAriaLabel: (item) => {
|
|
1382
1382
|
const hostLabel = getHostLabel(this.labelService, item.workspace);
|
|
1383
1383
|
if (hostLabel === undefined || hostLabel.length === 0) {
|
|
1384
|
-
return localize(
|
|
1384
|
+
return localize(13001, "{0}, trusted", this.labelService.getUriLabel(item.workspace));
|
|
1385
1385
|
}
|
|
1386
1386
|
return localize(
|
|
1387
|
-
|
|
1387
|
+
13002,
|
|
1388
1388
|
"{0} on {1}, trusted",
|
|
1389
1389
|
this.labelService.getUriLabel(item.workspace),
|
|
1390
1390
|
hostLabel
|
|
1391
1391
|
);
|
|
1392
1392
|
},
|
|
1393
|
-
getWidgetAriaLabel: () => ( localize(
|
|
1393
|
+
getWidgetAriaLabel: () => ( localize(13003, "Trusted Folders & Workspaces"))
|
|
1394
1394
|
},
|
|
1395
1395
|
identityProvider: {
|
|
1396
1396
|
getId(element) {
|
|
@@ -1407,15 +1407,15 @@ let ProfileWorkspacesRenderer = class ProfileWorkspacesRenderer extends ProfileP
|
|
|
1407
1407
|
})));
|
|
1408
1408
|
const addButtonBarElement = append(profileWorkspacesRowContainer, $('.profile-workspaces-button-container'));
|
|
1409
1409
|
const buttonBar = disposables.add(( new ButtonBar(addButtonBarElement)));
|
|
1410
|
-
const addButton = this._register(buttonBar.addButton({ title: ( localize(
|
|
1411
|
-
addButton.label = ( localize(
|
|
1410
|
+
const addButton = this._register(buttonBar.addButton({ title: ( localize(13004, "Add Folder")), ...defaultButtonStyles }));
|
|
1411
|
+
addButton.label = ( localize(13004, "Add Folder"));
|
|
1412
1412
|
disposables.add(addButton.onDidClick(async () => {
|
|
1413
1413
|
const uris = await this.fileDialogService.showOpenDialog({
|
|
1414
1414
|
canSelectFiles: false,
|
|
1415
1415
|
canSelectFolders: true,
|
|
1416
1416
|
canSelectMany: true,
|
|
1417
|
-
openLabel: ( localize(
|
|
1418
|
-
title: ( localize(
|
|
1417
|
+
openLabel: ( localize(13005, "Add Folder")),
|
|
1418
|
+
title: ( localize(13006, "Select Folders To Add"))
|
|
1419
1419
|
});
|
|
1420
1420
|
if (uris) {
|
|
1421
1421
|
if (profileElement?.root instanceof UserDataProfileElement) {
|
|
@@ -1430,7 +1430,7 @@ let ProfileWorkspacesRenderer = class ProfileWorkspacesRenderer extends ProfileP
|
|
|
1430
1430
|
}));
|
|
1431
1431
|
const updateTable = () => {
|
|
1432
1432
|
if (profileElement?.root instanceof UserDataProfileElement && profileElement.root.workspaces?.length) {
|
|
1433
|
-
profileWorkspacesDescriptionElement.textContent = ( localize(
|
|
1433
|
+
profileWorkspacesDescriptionElement.textContent = ( localize(13007, "Following folders and workspaces are using this profile"));
|
|
1434
1434
|
workspacesTableContainer.classList.remove('hide');
|
|
1435
1435
|
table.splice(0, table.length, ( profileElement.root.workspaces
|
|
1436
1436
|
.map(workspace => ({ workspace, profileElement: profileElement.root })))
|
|
@@ -1438,7 +1438,7 @@ let ProfileWorkspacesRenderer = class ProfileWorkspacesRenderer extends ProfileP
|
|
|
1438
1438
|
this.layout();
|
|
1439
1439
|
}
|
|
1440
1440
|
else {
|
|
1441
|
-
profileWorkspacesDescriptionElement.textContent = ( localize(
|
|
1441
|
+
profileWorkspacesDescriptionElement.textContent = ( localize(13008, "No folders or workspaces are using this profile"));
|
|
1442
1442
|
workspacesTableContainer.classList.add('hide');
|
|
1443
1443
|
}
|
|
1444
1444
|
};
|
|
@@ -1512,13 +1512,13 @@ let ExistingProfileResourceTreeRenderer = class ExistingProfileResourceTreeRende
|
|
|
1512
1512
|
}
|
|
1513
1513
|
const updateRadioItems = () => {
|
|
1514
1514
|
templateData.radio.setItems([{
|
|
1515
|
-
text: ( localize(
|
|
1516
|
-
tooltip: ( localize(
|
|
1515
|
+
text: ( localize(13009, "Default")),
|
|
1516
|
+
tooltip: ( localize(13010, "Use {0} from the Default profile", resourceTypeTitle)),
|
|
1517
1517
|
isActive: root.getFlag(element.resourceType)
|
|
1518
1518
|
},
|
|
1519
1519
|
{
|
|
1520
1520
|
text: root.name,
|
|
1521
|
-
tooltip: ( localize(
|
|
1521
|
+
tooltip: ( localize(13011, "Use {0} from the {1} profile", resourceTypeTitle, root.name)),
|
|
1522
1522
|
isActive: !root.getFlag(element.resourceType)
|
|
1523
1523
|
}]);
|
|
1524
1524
|
};
|
|
@@ -1586,22 +1586,22 @@ let NewProfileResourceTreeRenderer = class NewProfileResourceTreeRenderer extend
|
|
|
1586
1586
|
templateData.label.textContent = resourceTypeTitle;
|
|
1587
1587
|
const renderRadioItems = () => {
|
|
1588
1588
|
const options = [{
|
|
1589
|
-
text: ( localize(
|
|
1590
|
-
tooltip: ( localize(
|
|
1589
|
+
text: ( localize(13009, "Default")),
|
|
1590
|
+
tooltip: ( localize(13010, "Use {0} from the Default profile", resourceTypeTitle)),
|
|
1591
1591
|
},
|
|
1592
1592
|
{
|
|
1593
|
-
text: ( localize(
|
|
1594
|
-
tooltip: ( localize(
|
|
1593
|
+
text: ( localize(13012, "None")),
|
|
1594
|
+
tooltip: ( localize(13013, "Create empty {0}", resourceTypeTitle))
|
|
1595
1595
|
}];
|
|
1596
1596
|
const copyFromName = root.getCopyFromName();
|
|
1597
1597
|
const name = copyFromName === this.userDataProfilesService.defaultProfile.name
|
|
1598
|
-
? ( localize(
|
|
1598
|
+
? ( localize(12994, "{0} (Copy)", copyFromName))
|
|
1599
1599
|
: copyFromName;
|
|
1600
1600
|
if (root.copyFrom && name) {
|
|
1601
1601
|
templateData.radio.setItems([
|
|
1602
1602
|
{
|
|
1603
1603
|
text: name,
|
|
1604
|
-
tooltip: name ? ( localize(
|
|
1604
|
+
tooltip: name ? ( localize(13014, "Copy {0} from the {1} profile", resourceTypeTitle, name)) : ( localize(13015, "Copy")),
|
|
1605
1605
|
},
|
|
1606
1606
|
...options
|
|
1607
1607
|
]);
|
|
@@ -1822,7 +1822,7 @@ let ChangeProfileAction = class ChangeProfileAction {
|
|
|
1822
1822
|
this.label = 'Change Profile';
|
|
1823
1823
|
this.class = ThemeIcon.asClassName(editIcon);
|
|
1824
1824
|
this.enabled = true;
|
|
1825
|
-
this.tooltip = ( localize(
|
|
1825
|
+
this.tooltip = ( localize(13016, "Change Profile"));
|
|
1826
1826
|
this.checked = false;
|
|
1827
1827
|
}
|
|
1828
1828
|
run() { }
|
|
@@ -1896,7 +1896,7 @@ let WorkspaceUriActionsColumnRenderer = class WorkspaceUriActionsColumnRenderer
|
|
|
1896
1896
|
class: ThemeIcon.asClassName(Codicon.window),
|
|
1897
1897
|
enabled: !this.uriIdentityService.extUri.isEqual(item.workspace, item.profileElement.getCurrentWorkspace()),
|
|
1898
1898
|
id: 'openWorkspace',
|
|
1899
|
-
tooltip: ( localize(
|
|
1899
|
+
tooltip: ( localize(13017, "Open in New Window")),
|
|
1900
1900
|
run: () => item.profileElement.openWorkspace(item.workspace)
|
|
1901
1901
|
};
|
|
1902
1902
|
}
|
|
@@ -1906,7 +1906,7 @@ let WorkspaceUriActionsColumnRenderer = class WorkspaceUriActionsColumnRenderer
|
|
|
1906
1906
|
class: ThemeIcon.asClassName(removeIcon),
|
|
1907
1907
|
enabled: this.userDataProfileManagementService.getDefaultProfileToUse().id !== item.profileElement.profile.id,
|
|
1908
1908
|
id: 'deleteTrustedUri',
|
|
1909
|
-
tooltip: ( localize(
|
|
1909
|
+
tooltip: ( localize(13018, "Delete Path")),
|
|
1910
1910
|
run: () => item.profileElement.updateWorkspaces([], [item.workspace])
|
|
1911
1911
|
};
|
|
1912
1912
|
}
|
|
@@ -1921,7 +1921,7 @@ WorkspaceUriActionsColumnRenderer = WorkspaceUriActionsColumnRenderer_1 = ( __de
|
|
|
1921
1921
|
( __param(3, IUriIdentityService))
|
|
1922
1922
|
], WorkspaceUriActionsColumnRenderer));
|
|
1923
1923
|
function getHostLabel(labelService, workspaceUri) {
|
|
1924
|
-
return workspaceUri.authority ? labelService.getHostLabel(workspaceUri.scheme, workspaceUri.authority) : ( localize(
|
|
1924
|
+
return workspaceUri.authority ? labelService.getHostLabel(workspaceUri.scheme, workspaceUri.authority) : ( localize(13019, "Local"));
|
|
1925
1925
|
}
|
|
1926
1926
|
let UserDataProfilesEditorInput = class UserDataProfilesEditorInput extends EditorInput {
|
|
1927
1927
|
static { UserDataProfilesEditorInput_1 = this; }
|
|
@@ -1942,7 +1942,7 @@ let UserDataProfilesEditorInput = class UserDataProfilesEditorInput extends Edit
|
|
|
1942
1942
|
this._register(this.model.onDidChange(e => this.dirty = ( this.model.profiles.some(profile => profile instanceof NewProfileElement))));
|
|
1943
1943
|
}
|
|
1944
1944
|
get typeId() { return UserDataProfilesEditorInput_1.ID; }
|
|
1945
|
-
getName() { return localize(
|
|
1945
|
+
getName() { return localize(13020, "Profiles"); }
|
|
1946
1946
|
getIcon() { return defaultUserDataProfileIcon; }
|
|
1947
1947
|
async resolve() {
|
|
1948
1948
|
await this.model.resolve();
|
package/vscode/src/vs/workbench/contrib/userDataProfile/browser/userDataProfilesEditorModel.js
CHANGED
|
@@ -169,15 +169,15 @@ let AbstractUserDataProfileElement = class AbstractUserDataProfileElement extend
|
|
|
169
169
|
}
|
|
170
170
|
validate() {
|
|
171
171
|
if (!this.name) {
|
|
172
|
-
this.message = ( localize(
|
|
172
|
+
this.message = ( localize(13021, "Profile name is required and must be a non-empty value."));
|
|
173
173
|
return;
|
|
174
174
|
}
|
|
175
175
|
if (this.shouldValidateName() && this.name !== this.getInitialName() && ( this.userDataProfilesService.profiles.some(p => p.name === this.name))) {
|
|
176
|
-
this.message = ( localize(
|
|
176
|
+
this.message = ( localize(13022, "Profile with name {0} already exists.", this.name));
|
|
177
177
|
return;
|
|
178
178
|
}
|
|
179
179
|
if (this.flags && this.flags.settings && this.flags.keybindings && this.flags.tasks && this.flags.snippets && this.flags.extensions) {
|
|
180
|
-
this.message = ( localize(
|
|
180
|
+
this.message = ( localize(13023, "The profile should contain at least one configuration."));
|
|
181
181
|
return;
|
|
182
182
|
}
|
|
183
183
|
this.message = undefined;
|
|
@@ -204,7 +204,7 @@ let AbstractUserDataProfileElement = class AbstractUserDataProfileElement extend
|
|
|
204
204
|
openAction: children.length
|
|
205
205
|
? toAction({
|
|
206
206
|
id: '_open',
|
|
207
|
-
label: ( localize(
|
|
207
|
+
label: ( localize(13024, "Open to the Side")),
|
|
208
208
|
class: ThemeIcon.asClassName(Codicon.goToFile),
|
|
209
209
|
run: () => children[0]?.openAction?.run()
|
|
210
210
|
})
|
|
@@ -252,7 +252,7 @@ let AbstractUserDataProfileElement = class AbstractUserDataProfileElement extend
|
|
|
252
252
|
icon: child.themeIcon,
|
|
253
253
|
openAction: toAction({
|
|
254
254
|
id: '_openChild',
|
|
255
|
-
label: ( localize(
|
|
255
|
+
label: ( localize(13024, "Open to the Side")),
|
|
256
256
|
class: ThemeIcon.asClassName(Codicon.goToFile),
|
|
257
257
|
run: async () => {
|
|
258
258
|
if (child.parent.type === ProfileResourceType.Extensions) {
|
|
@@ -417,7 +417,7 @@ let UserDataProfileElement = class UserDataProfileElement extends AbstractUserDa
|
|
|
417
417
|
const children = await this.instantiationService.createInstance(ExtensionsResourceExportTreeItem, this.profile).getChildren();
|
|
418
418
|
return (children.map(child => this.toUserDataProfileResourceChildElement(child, undefined, [{
|
|
419
419
|
id: 'applyToAllProfiles',
|
|
420
|
-
label: ( localize(
|
|
420
|
+
label: ( localize(13025, "Apply Extension to all Profiles")),
|
|
421
421
|
checked: child.applicationScoped,
|
|
422
422
|
enabled: true,
|
|
423
423
|
class: '',
|
|
@@ -550,7 +550,7 @@ let NewProfileElement = class NewProfileElement extends AbstractUserDataProfileE
|
|
|
550
550
|
}
|
|
551
551
|
if (isUserDataProfile(this.copyFrom)) {
|
|
552
552
|
if (this.defaultName === this.name) {
|
|
553
|
-
this.name = this.defaultName = ( localize(
|
|
553
|
+
this.name = this.defaultName = ( localize(13026, "{0} (Copy)", this.copyFrom.name));
|
|
554
554
|
}
|
|
555
555
|
if (this.defaultIcon === this.icon) {
|
|
556
556
|
this.icon = this.defaultIcon = this.copyFrom.icon;
|
|
@@ -583,7 +583,7 @@ let NewProfileElement = class NewProfileElement extends AbstractUserDataProfileE
|
|
|
583
583
|
}
|
|
584
584
|
}
|
|
585
585
|
getNewProfileName() {
|
|
586
|
-
const name = ( localize(
|
|
586
|
+
const name = ( localize(13027, "Untitled"));
|
|
587
587
|
const nameRegEx = ( new RegExp(`${name}\\s(\\d+)`));
|
|
588
588
|
let nameIndex = 0;
|
|
589
589
|
for (const profile of this.userDataProfilesService.profiles) {
|
|
@@ -815,11 +815,11 @@ let UserDataProfilesEditorModel = class UserDataProfilesEditorModel extends Edit
|
|
|
815
815
|
}
|
|
816
816
|
createProfileElement(profile) {
|
|
817
817
|
const disposables = ( new DisposableStore());
|
|
818
|
-
const activateAction = disposables.add(( new Action('userDataProfile.activate', ( localize(
|
|
819
|
-
const copyFromProfileAction = disposables.add(( new Action('userDataProfile.copyFromProfile', ( localize(
|
|
820
|
-
const exportAction = disposables.add(( new Action('userDataProfile.export', ( localize(
|
|
821
|
-
const deleteAction = disposables.add(( new Action('userDataProfile.delete', ( localize(
|
|
822
|
-
const newWindowAction = disposables.add(( new Action('userDataProfile.newWindow', ( localize(
|
|
818
|
+
const activateAction = disposables.add(( new Action('userDataProfile.activate', ( localize(13028, "Use this Profile for Current Window")), ThemeIcon.asClassName(Codicon.check), true, () => this.userDataProfileManagementService.switchProfile(profileElement.profile))));
|
|
819
|
+
const copyFromProfileAction = disposables.add(( new Action('userDataProfile.copyFromProfile', ( localize(13029, "Duplicate...")), ThemeIcon.asClassName(Codicon.copy), true, () => this.createNewProfile(profileElement.profile))));
|
|
820
|
+
const exportAction = disposables.add(( new Action('userDataProfile.export', ( localize(13030, "Export...")), ThemeIcon.asClassName(Codicon.export), true, () => this.userDataProfileImportExportService.exportProfile(profile))));
|
|
821
|
+
const deleteAction = disposables.add(( new Action('userDataProfile.delete', ( localize(13031, "Delete")), ThemeIcon.asClassName(Codicon.trash), true, () => this.removeProfile(profileElement.profile))));
|
|
822
|
+
const newWindowAction = disposables.add(( new Action('userDataProfile.newWindow', ( localize(13032, "Open New Window with this Profile")), ThemeIcon.asClassName(Codicon.emptyWindow), true, () => this.openWindow(profileElement.profile))));
|
|
823
823
|
const primaryActions = [];
|
|
824
824
|
primaryActions.push(activateAction);
|
|
825
825
|
primaryActions.push(newWindowAction);
|
|
@@ -840,11 +840,11 @@ let UserDataProfilesEditorModel = class UserDataProfilesEditorModel extends Edit
|
|
|
840
840
|
const result = await this.dialogService.confirm({
|
|
841
841
|
type: 'info',
|
|
842
842
|
message: ( localize(
|
|
843
|
-
|
|
843
|
+
13033,
|
|
844
844
|
"A new profile is already being created. Do you want to discard it and create a new one?"
|
|
845
845
|
)),
|
|
846
|
-
primaryButton: ( localize(
|
|
847
|
-
cancelButton: ( localize(
|
|
846
|
+
primaryButton: ( localize(13034, "Discard & Create")),
|
|
847
|
+
cancelButton: ( localize(13035, "Cancel"))
|
|
848
848
|
});
|
|
849
849
|
if (!result.confirmed) {
|
|
850
850
|
return;
|
|
@@ -866,24 +866,24 @@ let UserDataProfilesEditorModel = class UserDataProfilesEditorModel extends Edit
|
|
|
866
866
|
disposables.add(toDisposable(() => cancellationTokenSource.dispose(true)));
|
|
867
867
|
const primaryActions = [];
|
|
868
868
|
const secondaryActions = [];
|
|
869
|
-
const createAction = disposables.add(( new Action('userDataProfile.create', ( localize(
|
|
869
|
+
const createAction = disposables.add(( new Action('userDataProfile.create', ( localize(13036, "Create")), undefined, true, () => this.saveNewProfile(false, cancellationTokenSource.token))));
|
|
870
870
|
primaryActions.push(createAction);
|
|
871
871
|
if (isWeb && copyFrom instanceof URI && isProfileURL(copyFrom)) {
|
|
872
|
-
primaryActions.push(disposables.add(( new Action('userDataProfile.createInDesktop', ( localize(
|
|
872
|
+
primaryActions.push(disposables.add(( new Action('userDataProfile.createInDesktop', ( localize(13037, "Create in {0}", this.productService.nameLong)), undefined, true, () => this.openerService.open(copyFrom, { openExternal: true })))));
|
|
873
873
|
}
|
|
874
|
-
const cancelAction = disposables.add(( new Action('userDataProfile.cancel', ( localize(
|
|
874
|
+
const cancelAction = disposables.add(( new Action('userDataProfile.cancel', ( localize(13035, "Cancel")), ThemeIcon.asClassName(Codicon.trash), true, () => this.discardNewProfile())));
|
|
875
875
|
secondaryActions.push(cancelAction);
|
|
876
|
-
const previewProfileAction = disposables.add(( new Action('userDataProfile.preview', ( localize(
|
|
876
|
+
const previewProfileAction = disposables.add(( new Action('userDataProfile.preview', ( localize(13038, "Preview")), ThemeIcon.asClassName(Codicon.openPreview), true, () => this.previewNewProfile(cancellationTokenSource.token))));
|
|
877
877
|
secondaryActions.push(previewProfileAction);
|
|
878
|
-
const exportAction = disposables.add(( new Action('userDataProfile.export', ( localize(
|
|
878
|
+
const exportAction = disposables.add(( new Action('userDataProfile.export', ( localize(13030, "Export...")), ThemeIcon.asClassName(Codicon.export), isUserDataProfile(copyFrom), () => this.exportNewProfile(cancellationTokenSource.token))));
|
|
879
879
|
this.newProfileElement = disposables.add(this.instantiationService.createInstance(NewProfileElement, copyFrom, [primaryActions, secondaryActions], [[cancelAction], [exportAction]]));
|
|
880
880
|
const updateCreateActionLabel = () => {
|
|
881
881
|
if (createAction.enabled) {
|
|
882
882
|
if (this.newProfileElement?.copyFrom && ( this.userDataProfilesService.profiles.some(p => !p.isTransient && p.name === this.newProfileElement?.name))) {
|
|
883
|
-
createAction.label = ( localize(
|
|
883
|
+
createAction.label = ( localize(13039, "Replace"));
|
|
884
884
|
}
|
|
885
885
|
else {
|
|
886
|
-
createAction.label = ( localize(
|
|
886
|
+
createAction.label = ( localize(13036, "Create"));
|
|
887
887
|
}
|
|
888
888
|
}
|
|
889
889
|
};
|
|
@@ -1038,9 +1038,9 @@ let UserDataProfilesEditorModel = class UserDataProfilesEditorModel extends Edit
|
|
|
1038
1038
|
async removeProfile(profile) {
|
|
1039
1039
|
const result = await this.dialogService.confirm({
|
|
1040
1040
|
type: 'info',
|
|
1041
|
-
message: ( localize(
|
|
1042
|
-
primaryButton: ( localize(
|
|
1043
|
-
cancelButton: ( localize(
|
|
1041
|
+
message: ( localize(13040, "Are you sure you want to delete the profile '{0}'?", profile.name)),
|
|
1042
|
+
primaryButton: ( localize(13031, "Delete")),
|
|
1043
|
+
cancelButton: ( localize(13035, "Cancel"))
|
|
1044
1044
|
});
|
|
1045
1045
|
if (result.confirmed) {
|
|
1046
1046
|
await this.userDataProfileManagementService.removeProfile(profile);
|