@codingame/monaco-vscode-theme-service-override 8.0.4 → 9.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 +3 -3
- package/vscode/src/vs/workbench/contrib/themes/browser/themes.contribution.js +170 -171
- package/vscode/src/vs/workbench/services/themes/browser/fileIconThemeData.js +3 -3
- package/vscode/src/vs/workbench/services/themes/browser/productIconThemeData.js +12 -12
- package/vscode/src/vs/workbench/services/themes/browser/workbenchThemeService.js +1 -1
- package/vscode/src/vs/workbench/services/themes/common/colorThemeData.js +8 -8
- package/vscode/src/vs/workbench/services/themes/common/colorThemeSchema.js +13 -13
- package/vscode/src/vs/workbench/services/themes/common/fileIconThemeSchema.js +39 -39
- package/vscode/src/vs/workbench/services/themes/common/productIconThemeSchema.js +8 -8
- package/vscode/src/vs/workbench/services/themes/common/themeConfiguration.js +36 -36
- package/vscode/src/vs/workbench/services/themes/common/themeExtensionPoints.js +21 -21
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@codingame/monaco-vscode-theme-service-override",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "9.0.0",
|
|
4
4
|
"keywords": [],
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "CodinGame",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
}
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"vscode": "npm:@codingame/monaco-vscode-api@
|
|
30
|
-
"@codingame/monaco-vscode-files-service-override": "
|
|
29
|
+
"vscode": "npm:@codingame/monaco-vscode-api@9.0.0",
|
|
30
|
+
"@codingame/monaco-vscode-files-service-override": "9.0.0"
|
|
31
31
|
}
|
|
32
32
|
}
|
|
@@ -63,7 +63,7 @@ import { DisposableStore } from 'vscode/vscode/vs/base/common/lifecycle';
|
|
|
63
63
|
import Severity$1 from 'vscode/vscode/vs/base/common/severity';
|
|
64
64
|
|
|
65
65
|
var DefaultThemeUpdatedNotificationContribution_1;
|
|
66
|
-
const manageExtensionIcon = registerIcon('theme-selection-manage-extension', Codicon.gear, ( localize(
|
|
66
|
+
const manageExtensionIcon = registerIcon('theme-selection-manage-extension', Codicon.gear, ( localize(2599, 'Icon for the \'Manage\' action in the theme selection quick pick.')));
|
|
67
67
|
var ConfigureItem;
|
|
68
68
|
( ((function(ConfigureItem) {
|
|
69
69
|
ConfigureItem["BROWSE_GALLERY"] = "marketplace";
|
|
@@ -163,91 +163,91 @@ let MarketplaceThemesPicker = class MarketplaceThemesPicker {
|
|
|
163
163
|
}
|
|
164
164
|
openQuickPick(value, currentTheme, selectTheme) {
|
|
165
165
|
let result = undefined;
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
}
|
|
186
|
-
else {
|
|
187
|
-
selectTheme(currentTheme, true);
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
});
|
|
191
|
-
quickpick.onDidTriggerItemButton(e => {
|
|
192
|
-
if (isItem(e.item)) {
|
|
193
|
-
const extensionId = e.item.theme?.extensionData?.extensionId;
|
|
194
|
-
if (extensionId) {
|
|
195
|
-
openExtensionViewlet(this.paneCompositeService, `@id:${extensionId}`);
|
|
196
|
-
}
|
|
197
|
-
else {
|
|
198
|
-
openExtensionViewlet(this.paneCompositeService, `${this.marketplaceQuery} ${quickpick.value}`);
|
|
199
|
-
}
|
|
166
|
+
const disposables = ( (new DisposableStore()));
|
|
167
|
+
return ( (new Promise((s, _) => {
|
|
168
|
+
const quickpick = disposables.add(this.quickInputService.createQuickPick());
|
|
169
|
+
quickpick.items = [];
|
|
170
|
+
quickpick.sortByLabel = false;
|
|
171
|
+
quickpick.matchOnDescription = true;
|
|
172
|
+
quickpick.buttons = [this.quickInputService.backButton];
|
|
173
|
+
quickpick.title = 'Marketplace Themes';
|
|
174
|
+
quickpick.placeholder = ( localize(2600, "Type to Search More. Select to Install. Up/Down Keys to Preview"));
|
|
175
|
+
quickpick.canSelectMany = false;
|
|
176
|
+
disposables.add(quickpick.onDidChangeValue(() => this.trigger(quickpick.value)));
|
|
177
|
+
disposables.add(quickpick.onDidAccept(async (_) => {
|
|
178
|
+
const themeItem = quickpick.selectedItems[0];
|
|
179
|
+
if (themeItem?.galleryExtension) {
|
|
180
|
+
result = 'selected';
|
|
181
|
+
quickpick.hide();
|
|
182
|
+
const success = await this.installExtension(themeItem.galleryExtension);
|
|
183
|
+
if (success) {
|
|
184
|
+
selectTheme(themeItem.theme, true);
|
|
200
185
|
}
|
|
201
|
-
|
|
202
|
-
quickpick.onDidChangeActive(themes => {
|
|
203
|
-
if (result === undefined) {
|
|
204
|
-
selectTheme(themes[0]?.theme, false);
|
|
205
|
-
}
|
|
206
|
-
});
|
|
207
|
-
quickpick.onDidHide(() => {
|
|
208
|
-
if (result === undefined) {
|
|
186
|
+
else {
|
|
209
187
|
selectTheme(currentTheme, true);
|
|
210
|
-
result = 'cancelled';
|
|
211
|
-
}
|
|
212
|
-
quickpick.dispose();
|
|
213
|
-
s(result);
|
|
214
|
-
});
|
|
215
|
-
quickpick.onDidTriggerButton(e => {
|
|
216
|
-
if (e === this.quickInputService.backButton) {
|
|
217
|
-
result = 'back';
|
|
218
|
-
quickpick.hide();
|
|
219
|
-
}
|
|
220
|
-
});
|
|
221
|
-
this.onDidChange(() => {
|
|
222
|
-
let items = this.themes;
|
|
223
|
-
if (this._searchOngoing) {
|
|
224
|
-
items = items.concat({ label: '$(sync~spin) Searching for themes...', id: undefined, alwaysShow: true });
|
|
225
188
|
}
|
|
226
|
-
|
|
227
|
-
|
|
189
|
+
}
|
|
190
|
+
}));
|
|
191
|
+
disposables.add(quickpick.onDidTriggerItemButton(e => {
|
|
192
|
+
if (isItem(e.item)) {
|
|
193
|
+
const extensionId = e.item.theme?.extensionData?.extensionId;
|
|
194
|
+
if (extensionId) {
|
|
195
|
+
openExtensionViewlet(this.paneCompositeService, `@id:${extensionId}`);
|
|
228
196
|
}
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
quickpick.items = items;
|
|
232
|
-
if (newActiveItem) {
|
|
233
|
-
quickpick.activeItems = [newActiveItem];
|
|
197
|
+
else {
|
|
198
|
+
openExtensionViewlet(this.paneCompositeService, `${this.marketplaceQuery} ${quickpick.value}`);
|
|
234
199
|
}
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
200
|
+
}
|
|
201
|
+
}));
|
|
202
|
+
disposables.add(quickpick.onDidChangeActive(themes => {
|
|
203
|
+
if (result === undefined) {
|
|
204
|
+
selectTheme(themes[0]?.theme, false);
|
|
205
|
+
}
|
|
206
|
+
}));
|
|
207
|
+
disposables.add(quickpick.onDidHide(() => {
|
|
208
|
+
if (result === undefined) {
|
|
209
|
+
selectTheme(currentTheme, true);
|
|
210
|
+
result = 'cancelled';
|
|
211
|
+
}
|
|
212
|
+
s(result);
|
|
213
|
+
}));
|
|
214
|
+
disposables.add(quickpick.onDidTriggerButton(e => {
|
|
215
|
+
if (e === this.quickInputService.backButton) {
|
|
216
|
+
result = 'back';
|
|
217
|
+
quickpick.hide();
|
|
218
|
+
}
|
|
219
|
+
}));
|
|
220
|
+
disposables.add(this.onDidChange(() => {
|
|
221
|
+
let items = this.themes;
|
|
222
|
+
if (this._searchOngoing) {
|
|
223
|
+
items = items.concat({ label: '$(sync~spin) Searching for themes...', id: undefined, alwaysShow: true });
|
|
224
|
+
}
|
|
225
|
+
else if (items.length === 0 && this._searchError) {
|
|
226
|
+
items = [{ label: `$(error) ${( localize(2601, 'Error while searching for themes: {0}', this._searchError))}`, id: undefined, alwaysShow: true }];
|
|
227
|
+
}
|
|
228
|
+
const activeItemId = quickpick.activeItems[0]?.id;
|
|
229
|
+
const newActiveItem = activeItemId ? items.find(i => isItem(i) && i.id === activeItemId) : undefined;
|
|
230
|
+
quickpick.items = items;
|
|
231
|
+
if (newActiveItem) {
|
|
232
|
+
quickpick.activeItems = [newActiveItem];
|
|
233
|
+
}
|
|
234
|
+
}));
|
|
235
|
+
this.trigger(value);
|
|
236
|
+
quickpick.show();
|
|
237
|
+
}))).finally(() => {
|
|
238
|
+
disposables.dispose();
|
|
239
|
+
});
|
|
240
240
|
}
|
|
241
241
|
async installExtension(galleryExtension) {
|
|
242
242
|
openExtensionViewlet(this.paneCompositeService, `@id:${galleryExtension.identifier.id}`);
|
|
243
243
|
const result = await this.dialogService.confirm({
|
|
244
244
|
message: ( localize(
|
|
245
|
-
|
|
245
|
+
2602,
|
|
246
246
|
"This will install extension '{0}' published by '{1}'. Do you want to continue?",
|
|
247
247
|
galleryExtension.displayName,
|
|
248
248
|
galleryExtension.publisherDisplayName
|
|
249
249
|
)),
|
|
250
|
-
primaryButton: ( localize(
|
|
250
|
+
primaryButton: ( localize(2603, "OK"))
|
|
251
251
|
});
|
|
252
252
|
if (!result.confirmed) {
|
|
253
253
|
return false;
|
|
@@ -255,7 +255,7 @@ let MarketplaceThemesPicker = class MarketplaceThemesPicker {
|
|
|
255
255
|
try {
|
|
256
256
|
await this.progressService.withProgress({
|
|
257
257
|
location: ProgressLocation.Notification,
|
|
258
|
-
title: ( localize(
|
|
258
|
+
title: ( localize(2604, "Installing Extension {0}...", galleryExtension.displayName))
|
|
259
259
|
}, async () => {
|
|
260
260
|
await this.extensionManagementService.installFromGallery(galleryExtension, {
|
|
261
261
|
isMachineScoped: false,
|
|
@@ -324,68 +324,67 @@ let InstalledThemesPicker = class InstalledThemesPicker {
|
|
|
324
324
|
}, applyTheme ? 0 : 200);
|
|
325
325
|
};
|
|
326
326
|
const pickInstalledThemes = (activeItemId) => {
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
if (!theme || theme.configureItem) {
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
await pickInstalledThemes(undefined);
|
|
356
|
-
}
|
|
327
|
+
const disposables = ( (new DisposableStore()));
|
|
328
|
+
return ( (new Promise((s, _) => {
|
|
329
|
+
let isCompleted = false;
|
|
330
|
+
const autoFocusIndex = picks.findIndex(p => isItem(p) && p.id === activeItemId);
|
|
331
|
+
const quickpick = disposables.add(this.quickInputService.createQuickPick({ useSeparators: true }));
|
|
332
|
+
quickpick.items = picks;
|
|
333
|
+
quickpick.title = this.options.title;
|
|
334
|
+
quickpick.description = this.options.description;
|
|
335
|
+
quickpick.placeholder = this.options.placeholderMessage;
|
|
336
|
+
quickpick.activeItems = [picks[autoFocusIndex]];
|
|
337
|
+
quickpick.canSelectMany = false;
|
|
338
|
+
quickpick.toggles = this.options.toggles;
|
|
339
|
+
quickpick.toggles?.forEach(toggle => {
|
|
340
|
+
disposables.add(toggle.onChange(() => this.options.onToggle?.(toggle, quickpick)));
|
|
341
|
+
});
|
|
342
|
+
quickpick.matchOnDescription = true;
|
|
343
|
+
disposables.add(quickpick.onDidAccept(async (_) => {
|
|
344
|
+
isCompleted = true;
|
|
345
|
+
const theme = quickpick.selectedItems[0];
|
|
346
|
+
if (!theme || theme.configureItem) {
|
|
347
|
+
if (!theme || theme.configureItem === ConfigureItem.EXTENSIONS_VIEW) {
|
|
348
|
+
openExtensionViewlet(this.paneCompositeService, `${this.options.marketplaceTag} ${quickpick.value}`);
|
|
349
|
+
}
|
|
350
|
+
else if (theme.configureItem === ConfigureItem.BROWSE_GALLERY) {
|
|
351
|
+
if (marketplaceThemePicker) {
|
|
352
|
+
const res = await marketplaceThemePicker.openQuickPick(quickpick.value, currentTheme, selectTheme);
|
|
353
|
+
if (res === 'back') {
|
|
354
|
+
await pickInstalledThemes(undefined);
|
|
357
355
|
}
|
|
358
356
|
}
|
|
359
357
|
}
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
358
|
+
}
|
|
359
|
+
else {
|
|
360
|
+
selectTheme(theme.theme, true);
|
|
361
|
+
}
|
|
362
|
+
quickpick.hide();
|
|
363
|
+
s();
|
|
364
|
+
}));
|
|
365
|
+
disposables.add(quickpick.onDidChangeActive(themes => selectTheme(themes[0]?.theme, false)));
|
|
366
|
+
disposables.add(quickpick.onDidHide(() => {
|
|
367
|
+
if (!isCompleted) {
|
|
368
|
+
selectTheme(currentTheme, true);
|
|
364
369
|
s();
|
|
365
|
-
}
|
|
366
|
-
quickpick.
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
370
|
+
}
|
|
371
|
+
quickpick.dispose();
|
|
372
|
+
}));
|
|
373
|
+
disposables.add(quickpick.onDidTriggerItemButton(e => {
|
|
374
|
+
if (isItem(e.item)) {
|
|
375
|
+
const extensionId = e.item.theme?.extensionData?.extensionId;
|
|
376
|
+
if (extensionId) {
|
|
377
|
+
openExtensionViewlet(this.paneCompositeService, `@id:${extensionId}`);
|
|
371
378
|
}
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
});
|
|
375
|
-
quickpick.onDidTriggerItemButton(e => {
|
|
376
|
-
if (isItem(e.item)) {
|
|
377
|
-
const extensionId = e.item.theme?.extensionData?.extensionId;
|
|
378
|
-
if (extensionId) {
|
|
379
|
-
openExtensionViewlet(this.paneCompositeService, `@id:${extensionId}`);
|
|
380
|
-
}
|
|
381
|
-
else {
|
|
382
|
-
openExtensionViewlet(this.paneCompositeService, `${this.options.marketplaceTag} ${quickpick.value}`);
|
|
383
|
-
}
|
|
379
|
+
else {
|
|
380
|
+
openExtensionViewlet(this.paneCompositeService, `${this.options.marketplaceTag} ${quickpick.value}`);
|
|
384
381
|
}
|
|
385
|
-
}
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
)
|
|
382
|
+
}
|
|
383
|
+
}));
|
|
384
|
+
quickpick.show();
|
|
385
|
+
}))).finally(() => {
|
|
386
|
+
disposables.dispose();
|
|
387
|
+
});
|
|
389
388
|
};
|
|
390
389
|
await pickInstalledThemes(currentTheme.id);
|
|
391
390
|
marketplaceThemePicker?.dispose();
|
|
@@ -403,7 +402,7 @@ registerAction2(class extends Action2 {
|
|
|
403
402
|
constructor() {
|
|
404
403
|
super({
|
|
405
404
|
id: SelectColorThemeCommandId,
|
|
406
|
-
title: ( localize2(
|
|
405
|
+
title: ( localize2(2605, 'Color Theme')),
|
|
407
406
|
category: Categories.Preferences,
|
|
408
407
|
f1: true,
|
|
409
408
|
keybinding: {
|
|
@@ -414,12 +413,12 @@ registerAction2(class extends Action2 {
|
|
|
414
413
|
}
|
|
415
414
|
getTitle(colorScheme) {
|
|
416
415
|
switch (colorScheme) {
|
|
417
|
-
case ColorScheme.DARK: return ( localize(
|
|
418
|
-
case ColorScheme.LIGHT: return ( localize(
|
|
419
|
-
case ColorScheme.HIGH_CONTRAST_DARK: return ( localize(
|
|
420
|
-
case ColorScheme.HIGH_CONTRAST_LIGHT: return ( localize(
|
|
416
|
+
case ColorScheme.DARK: return ( localize(2606, "Select Color Theme for System Dark Mode"));
|
|
417
|
+
case ColorScheme.LIGHT: return ( localize(2607, "Select Color Theme for System Light Mode"));
|
|
418
|
+
case ColorScheme.HIGH_CONTRAST_DARK: return ( localize(2608, "Select Color Theme for High Contrast Dark Mode"));
|
|
419
|
+
case ColorScheme.HIGH_CONTRAST_LIGHT: return ( localize(2609, "Select Color Theme for High Contrast Light Mode"));
|
|
421
420
|
default:
|
|
422
|
-
return ( localize(
|
|
421
|
+
return ( localize(2610, "Select Color Theme (detect system color mode disabled)"));
|
|
423
422
|
}
|
|
424
423
|
}
|
|
425
424
|
async run(accessor) {
|
|
@@ -429,7 +428,7 @@ registerAction2(class extends Action2 {
|
|
|
429
428
|
let modeConfigureToggle;
|
|
430
429
|
if (preferredColorScheme) {
|
|
431
430
|
modeConfigureToggle = ( (new Toggle({
|
|
432
|
-
title: ( localize(
|
|
431
|
+
title: ( localize(2611, 'Detect system color mode enabled. Click to configure.')),
|
|
433
432
|
icon: Codicon.colorMode,
|
|
434
433
|
isChecked: false,
|
|
435
434
|
...defaultToggleStyles
|
|
@@ -437,15 +436,15 @@ registerAction2(class extends Action2 {
|
|
|
437
436
|
}
|
|
438
437
|
else {
|
|
439
438
|
modeConfigureToggle = ( (new Toggle({
|
|
440
|
-
title: ( localize(
|
|
439
|
+
title: ( localize(2612, 'Detect system color mode disabled. Click to configure.')),
|
|
441
440
|
icon: Codicon.colorMode,
|
|
442
441
|
isChecked: false,
|
|
443
442
|
...defaultToggleStyles
|
|
444
443
|
})));
|
|
445
444
|
}
|
|
446
445
|
const options = {
|
|
447
|
-
installMessage: ( localize(
|
|
448
|
-
browseMessage: '$(plus) ' + ( localize(
|
|
446
|
+
installMessage: ( localize(2613, "Install Additional Color Themes...")),
|
|
447
|
+
browseMessage: '$(plus) ' + ( localize(2614, "Browse Additional Color Themes...")),
|
|
449
448
|
placeholderMessage: this.getTitle(preferredColorScheme),
|
|
450
449
|
marketplaceTag: 'category:themes',
|
|
451
450
|
toggles: [modeConfigureToggle],
|
|
@@ -460,9 +459,9 @@ registerAction2(class extends Action2 {
|
|
|
460
459
|
const picker = instantiationService.createInstance(InstalledThemesPicker, options, setTheme, getMarketplaceColorThemes);
|
|
461
460
|
const themes = await themeService.getColorThemes();
|
|
462
461
|
const currentTheme = themeService.getColorTheme();
|
|
463
|
-
const lightEntries = toEntries(themes.filter(t => t.type === ColorScheme.LIGHT), ( localize(
|
|
464
|
-
const darkEntries = toEntries(themes.filter(t => t.type === ColorScheme.DARK), ( localize(
|
|
465
|
-
const hcEntries = toEntries(themes.filter(t => isHighContrast(t.type)), ( localize(
|
|
462
|
+
const lightEntries = toEntries(themes.filter(t => t.type === ColorScheme.LIGHT), ( localize(2615, "light themes")));
|
|
463
|
+
const darkEntries = toEntries(themes.filter(t => t.type === ColorScheme.DARK), ( localize(2616, "dark themes")));
|
|
464
|
+
const hcEntries = toEntries(themes.filter(t => isHighContrast(t.type)), ( localize(2617, "high contrast themes")));
|
|
466
465
|
let picks;
|
|
467
466
|
switch (preferredColorScheme) {
|
|
468
467
|
case ColorScheme.DARK:
|
|
@@ -485,7 +484,7 @@ registerAction2(class extends Action2 {
|
|
|
485
484
|
constructor() {
|
|
486
485
|
super({
|
|
487
486
|
id: SelectFileIconThemeCommandId,
|
|
488
|
-
title: ( localize2(
|
|
487
|
+
title: ( localize2(2618, 'File Icon Theme')),
|
|
489
488
|
category: Categories.Preferences,
|
|
490
489
|
f1: true
|
|
491
490
|
});
|
|
@@ -493,8 +492,8 @@ registerAction2(class extends Action2 {
|
|
|
493
492
|
async run(accessor) {
|
|
494
493
|
const themeService = accessor.get(IWorkbenchThemeService);
|
|
495
494
|
const options = {
|
|
496
|
-
installMessage: ( localize(
|
|
497
|
-
placeholderMessage: ( localize(
|
|
495
|
+
installMessage: ( localize(2619, "Install Additional File Icon Themes...")),
|
|
496
|
+
placeholderMessage: ( localize(2620, "Select File Icon Theme (Up/Down Keys to Preview)")),
|
|
498
497
|
marketplaceTag: 'tag:icon-theme'
|
|
499
498
|
};
|
|
500
499
|
const setTheme = (theme, settingsTarget) => themeService.setFileIconTheme(theme, settingsTarget);
|
|
@@ -502,8 +501,8 @@ registerAction2(class extends Action2 {
|
|
|
502
501
|
const instantiationService = accessor.get(IInstantiationService);
|
|
503
502
|
const picker = instantiationService.createInstance(InstalledThemesPicker, options, setTheme, getMarketplaceColorThemes);
|
|
504
503
|
const picks = [
|
|
505
|
-
{ type: 'separator', label: ( localize(
|
|
506
|
-
{ id: '', theme: FileIconThemeData.noIconTheme, label: ( localize(
|
|
504
|
+
{ type: 'separator', label: ( localize(2621, 'file icon themes')) },
|
|
505
|
+
{ id: '', theme: FileIconThemeData.noIconTheme, label: ( localize(2622, 'None')), description: ( localize(2623, 'Disable File Icons')) },
|
|
507
506
|
...toEntries(await themeService.getFileIconThemes()),
|
|
508
507
|
];
|
|
509
508
|
await picker.openQuickPick(picks, themeService.getFileIconTheme());
|
|
@@ -514,7 +513,7 @@ registerAction2(class extends Action2 {
|
|
|
514
513
|
constructor() {
|
|
515
514
|
super({
|
|
516
515
|
id: SelectProductIconThemeCommandId,
|
|
517
|
-
title: ( localize2(
|
|
516
|
+
title: ( localize2(2624, 'Product Icon Theme')),
|
|
518
517
|
category: Categories.Preferences,
|
|
519
518
|
f1: true
|
|
520
519
|
});
|
|
@@ -522,9 +521,9 @@ registerAction2(class extends Action2 {
|
|
|
522
521
|
async run(accessor) {
|
|
523
522
|
const themeService = accessor.get(IWorkbenchThemeService);
|
|
524
523
|
const options = {
|
|
525
|
-
installMessage: ( localize(
|
|
526
|
-
browseMessage: '$(plus) ' + ( localize(
|
|
527
|
-
placeholderMessage: ( localize(
|
|
524
|
+
installMessage: ( localize(2625, "Install Additional Product Icon Themes...")),
|
|
525
|
+
browseMessage: '$(plus) ' + ( localize(2626, "Browse Additional Product Icon Themes...")),
|
|
526
|
+
placeholderMessage: ( localize(2627, "Select Product Icon Theme (Up/Down Keys to Preview)")),
|
|
528
527
|
marketplaceTag: 'tag:product-icon-theme'
|
|
529
528
|
};
|
|
530
529
|
const setTheme = (theme, settingsTarget) => themeService.setProductIconTheme(theme, settingsTarget);
|
|
@@ -532,8 +531,8 @@ registerAction2(class extends Action2 {
|
|
|
532
531
|
const instantiationService = accessor.get(IInstantiationService);
|
|
533
532
|
const picker = instantiationService.createInstance(InstalledThemesPicker, options, setTheme, getMarketplaceColorThemes);
|
|
534
533
|
const picks = [
|
|
535
|
-
{ type: 'separator', label: ( localize(
|
|
536
|
-
{ id: DEFAULT_PRODUCT_ICON_THEME_ID, theme: ProductIconThemeData.defaultTheme, label: ( localize(
|
|
534
|
+
{ type: 'separator', label: ( localize(2628, 'product icon themes')) },
|
|
535
|
+
{ id: DEFAULT_PRODUCT_ICON_THEME_ID, theme: ProductIconThemeData.defaultTheme, label: ( localize(2629, 'Default')) },
|
|
537
536
|
...toEntries(await themeService.getProductIconThemes()),
|
|
538
537
|
];
|
|
539
538
|
await picker.openQuickPick(picks, themeService.getProductIconTheme());
|
|
@@ -599,13 +598,13 @@ function toEntries(themes, label) {
|
|
|
599
598
|
}
|
|
600
599
|
const configureButton = {
|
|
601
600
|
iconClass: ThemeIcon.asClassName(manageExtensionIcon),
|
|
602
|
-
tooltip: ( localize(
|
|
601
|
+
tooltip: ( localize(2630, "Manage Extension")),
|
|
603
602
|
};
|
|
604
603
|
registerAction2(class extends Action2 {
|
|
605
604
|
constructor() {
|
|
606
605
|
super({
|
|
607
606
|
id: 'workbench.action.generateColorTheme',
|
|
608
|
-
title: ( localize2(
|
|
607
|
+
title: ( localize2(2631, 'Generate Color Theme From Current Settings')),
|
|
609
608
|
category: Categories.Developer,
|
|
610
609
|
f1: true
|
|
611
610
|
});
|
|
@@ -655,7 +654,7 @@ registerAction2(class extends Action2 {
|
|
|
655
654
|
constructor() {
|
|
656
655
|
super({
|
|
657
656
|
id: toggleLightDarkThemesCommandId,
|
|
658
|
-
title: ( localize2(
|
|
657
|
+
title: ( localize2(2632, 'Toggle between Light/Dark Themes')),
|
|
659
658
|
category: Categories.Preferences,
|
|
660
659
|
f1: true,
|
|
661
660
|
});
|
|
@@ -667,13 +666,13 @@ registerAction2(class extends Action2 {
|
|
|
667
666
|
const preferencesService = accessor.get(IPreferencesService);
|
|
668
667
|
if (configurationService.getValue(ThemeSettings.DETECT_COLOR_SCHEME)) {
|
|
669
668
|
const message = ( localize(
|
|
670
|
-
|
|
669
|
+
2633,
|
|
671
670
|
"Cannot toggle between light and dark themes when `{0}` is enabled in settings.",
|
|
672
671
|
ThemeSettings.DETECT_COLOR_SCHEME
|
|
673
672
|
));
|
|
674
673
|
notificationService.prompt(Severity$1.Info, message, [
|
|
675
674
|
{
|
|
676
|
-
label: ( localize(
|
|
675
|
+
label: ( localize(2634, "Open Settings")),
|
|
677
676
|
run: () => {
|
|
678
677
|
return preferencesService.openUserSettings({ query: ThemeSettings.DETECT_COLOR_SCHEME });
|
|
679
678
|
}
|
|
@@ -711,7 +710,7 @@ registerAction2(class extends Action2 {
|
|
|
711
710
|
constructor() {
|
|
712
711
|
super({
|
|
713
712
|
id: browseColorThemesInMarketplaceCommandId,
|
|
714
|
-
title: ( localize2(
|
|
713
|
+
title: ( localize2(2635, 'Browse Color Themes in Marketplace')),
|
|
715
714
|
category: Categories.Preferences,
|
|
716
715
|
f1: true,
|
|
717
716
|
});
|
|
@@ -747,13 +746,13 @@ registerAction2(class extends Action2 {
|
|
|
747
746
|
});
|
|
748
747
|
const ThemesSubMenu = ( (new MenuId('ThemesSubMenu')));
|
|
749
748
|
MenuRegistry.appendMenuItem(MenuId.GlobalActivity, {
|
|
750
|
-
title: ( localize(
|
|
749
|
+
title: ( localize(2636, "Themes")),
|
|
751
750
|
submenu: ThemesSubMenu,
|
|
752
751
|
group: '2_configuration',
|
|
753
752
|
order: 7
|
|
754
753
|
});
|
|
755
754
|
MenuRegistry.appendMenuItem(MenuId.MenubarPreferencesMenu, {
|
|
756
|
-
title: ( localize(
|
|
755
|
+
title: ( localize(2637, "&&Theme")),
|
|
757
756
|
submenu: ThemesSubMenu,
|
|
758
757
|
group: '2_configuration',
|
|
759
758
|
order: 7
|
|
@@ -761,21 +760,21 @@ MenuRegistry.appendMenuItem(MenuId.MenubarPreferencesMenu, {
|
|
|
761
760
|
MenuRegistry.appendMenuItem(ThemesSubMenu, {
|
|
762
761
|
command: {
|
|
763
762
|
id: SelectColorThemeCommandId,
|
|
764
|
-
title: ( localize(
|
|
763
|
+
title: ( localize(2605, 'Color Theme'))
|
|
765
764
|
},
|
|
766
765
|
order: 1
|
|
767
766
|
});
|
|
768
767
|
MenuRegistry.appendMenuItem(ThemesSubMenu, {
|
|
769
768
|
command: {
|
|
770
769
|
id: SelectFileIconThemeCommandId,
|
|
771
|
-
title: ( localize(
|
|
770
|
+
title: ( localize(2638, "File Icon Theme"))
|
|
772
771
|
},
|
|
773
772
|
order: 2
|
|
774
773
|
});
|
|
775
774
|
MenuRegistry.appendMenuItem(ThemesSubMenu, {
|
|
776
775
|
command: {
|
|
777
776
|
id: SelectProductIconThemeCommandId,
|
|
778
|
-
title: ( localize(
|
|
777
|
+
title: ( localize(2639, "Product Icon Theme"))
|
|
779
778
|
},
|
|
780
779
|
order: 3
|
|
781
780
|
});
|
|
@@ -817,20 +816,20 @@ let DefaultThemeUpdatedNotificationContribution = class DefaultThemeUpdatedNotif
|
|
|
817
816
|
if (newTheme) {
|
|
818
817
|
const choices = [
|
|
819
818
|
{
|
|
820
|
-
label: ( localize(
|
|
819
|
+
label: ( localize(2640, "Keep New Theme")),
|
|
821
820
|
run: () => {
|
|
822
821
|
this._writeTelemetry('keepNew');
|
|
823
822
|
}
|
|
824
823
|
},
|
|
825
824
|
{
|
|
826
|
-
label: ( localize(
|
|
825
|
+
label: ( localize(2641, "Browse Themes")),
|
|
827
826
|
run: () => {
|
|
828
827
|
this._writeTelemetry('browse');
|
|
829
828
|
this._commandService.executeCommand(SelectColorThemeCommandId);
|
|
830
829
|
}
|
|
831
830
|
},
|
|
832
831
|
{
|
|
833
|
-
label: ( localize(
|
|
832
|
+
label: ( localize(2642, "Revert")),
|
|
834
833
|
run: async () => {
|
|
835
834
|
this._writeTelemetry('keepOld');
|
|
836
835
|
const oldSettingsId = usingLight ? ThemeSettingDefaults.COLOR_THEME_LIGHT_OLD : ThemeSettingDefaults.COLOR_THEME_DARK_OLD;
|
|
@@ -842,7 +841,7 @@ let DefaultThemeUpdatedNotificationContribution = class DefaultThemeUpdatedNotif
|
|
|
842
841
|
}
|
|
843
842
|
];
|
|
844
843
|
await this._notificationService.prompt(Severity$1.Info, ( localize(
|
|
845
|
-
|
|
844
|
+
2643,
|
|
846
845
|
"Visual Studio Code now ships with a new default theme '{0}'. If you prefer, you can switch back to the old theme or try one of the many other color themes available.",
|
|
847
846
|
newTheme.label
|
|
848
847
|
)), choices, {
|
|
@@ -855,20 +854,20 @@ let DefaultThemeUpdatedNotificationContribution = class DefaultThemeUpdatedNotif
|
|
|
855
854
|
const theme = (await this._workbenchThemeService.getColorThemes()).find(theme => theme.settingsId === newThemeSettingsId);
|
|
856
855
|
if (theme) {
|
|
857
856
|
const choices = [{
|
|
858
|
-
label: ( localize(
|
|
857
|
+
label: ( localize(2644, "Try New Theme")),
|
|
859
858
|
run: () => {
|
|
860
859
|
this._writeTelemetry('tryNew');
|
|
861
860
|
this._workbenchThemeService.setColorTheme(theme, 'auto');
|
|
862
861
|
}
|
|
863
862
|
},
|
|
864
863
|
{
|
|
865
|
-
label: ( localize(
|
|
864
|
+
label: ( localize(2645, "Cancel")),
|
|
866
865
|
run: () => {
|
|
867
866
|
this._writeTelemetry('cancel');
|
|
868
867
|
}
|
|
869
868
|
}];
|
|
870
869
|
await this._notificationService.prompt(Severity$1.Info, ( localize(
|
|
871
|
-
|
|
870
|
+
2646,
|
|
872
871
|
"Visual Studio Code now ships with a new default theme '{0}'. Do you want to give it a try?",
|
|
873
872
|
theme.label
|
|
874
873
|
)), choices, { onCancel: () => this._writeTelemetry('cancel') });
|
|
@@ -139,13 +139,13 @@ class FileIconThemeLoader {
|
|
|
139
139
|
const contentValue = parse(content, errors);
|
|
140
140
|
if (errors.length > 0) {
|
|
141
141
|
return Promise.reject(( (new Error(( localize(
|
|
142
|
-
|
|
142
|
+
7212,
|
|
143
143
|
"Problems parsing file icons file: {0}",
|
|
144
144
|
( (errors.map(e => getParseErrorMessage(e.error)))).join(', ')
|
|
145
145
|
))))));
|
|
146
146
|
}
|
|
147
147
|
else if (getNodeType(contentValue) !== 'object') {
|
|
148
|
-
return Promise.reject(( (new Error(( localize(
|
|
148
|
+
return Promise.reject(( (new Error(( localize(7213, "Invalid format for file icons theme file: Object expected."))))));
|
|
149
149
|
}
|
|
150
150
|
return Promise.resolve(contentValue);
|
|
151
151
|
});
|
|
@@ -363,7 +363,7 @@ function handleParentFolder(key, selectors) {
|
|
|
363
363
|
return key;
|
|
364
364
|
}
|
|
365
365
|
function escapeCSS(str) {
|
|
366
|
-
str = str.replace(/[\
|
|
366
|
+
str = str.replace(/[\s]/g, '/');
|
|
367
367
|
return mainWindow.CSS.escape(str);
|
|
368
368
|
}
|
|
369
369
|
|