@jupyterlab/mainmenu-extension 4.0.0-alpha.2 → 4.0.0-alpha.20
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/lib/index.js +64 -33
- package/lib/index.js.map +1 -1
- package/package.json +17 -16
- package/src/index.ts +935 -0
package/lib/index.js
CHANGED
|
@@ -12,7 +12,7 @@ import { ServerConnection } from '@jupyterlab/services';
|
|
|
12
12
|
import { ISettingRegistry, SettingRegistry } from '@jupyterlab/settingregistry';
|
|
13
13
|
import { ITranslator } from '@jupyterlab/translation';
|
|
14
14
|
import { fastForwardIcon, refreshIcon, runIcon, stopIcon } from '@jupyterlab/ui-components';
|
|
15
|
-
import {
|
|
15
|
+
import { find } from '@lumino/algorithm';
|
|
16
16
|
import { JSONExt } from '@lumino/coreutils';
|
|
17
17
|
import { Widget } from '@lumino/widgets';
|
|
18
18
|
const PLUGIN_ID = '@jupyterlab/mainmenu-extension:plugin';
|
|
@@ -76,8 +76,10 @@ const plugin = {
|
|
|
76
76
|
// Built menu from settings
|
|
77
77
|
if (registry) {
|
|
78
78
|
await Private.loadSettingsMenu(registry, (aMenu) => {
|
|
79
|
-
menu.addMenu(aMenu, { rank: aMenu.rank });
|
|
79
|
+
menu.addMenu(aMenu, false, { rank: aMenu.rank });
|
|
80
80
|
}, options => MainMenu.generateMenu(commands, options, trans), translator);
|
|
81
|
+
// Trigger single update
|
|
82
|
+
menu.update();
|
|
81
83
|
}
|
|
82
84
|
// Only add quit button if the back-end supports it by checking page config.
|
|
83
85
|
const quitButton = PageConfig.getOption('quitButton').toLowerCase();
|
|
@@ -192,11 +194,14 @@ export function createFileMenu(app, menu, router, trans) {
|
|
|
192
194
|
// This one is a bit different, in that we consider it enabled
|
|
193
195
|
// even if it cannot find a delegate for the activity.
|
|
194
196
|
// In that case, we instead call the application `close` command.
|
|
195
|
-
commands.addCommand(CommandIDs.closeAndCleanup,
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
197
|
+
commands.addCommand(CommandIDs.closeAndCleanup, {
|
|
198
|
+
...createSemanticCommand(app, menu.closeAndCleaners, {
|
|
199
|
+
execute: 'application:close',
|
|
200
|
+
label: trans.__('Close and Shut Down'),
|
|
201
|
+
isEnabled: true
|
|
202
|
+
}, trans),
|
|
203
|
+
isEnabled: () => !!app.shell.currentWidget && !!app.shell.currentWidget.title.closable
|
|
204
|
+
});
|
|
200
205
|
// Add a delegator command for creating a console for an activity.
|
|
201
206
|
commands.addCommand(CommandIDs.createConsole, createSemanticCommand(app, menu.consoleCreators, {
|
|
202
207
|
label: trans.__('New Console for Activity')
|
|
@@ -274,17 +279,23 @@ export function createFileMenu(app, menu, router, trans) {
|
|
|
274
279
|
*/
|
|
275
280
|
export function createKernelMenu(app, menu, trans) {
|
|
276
281
|
const commands = app.commands;
|
|
277
|
-
commands.addCommand(CommandIDs.interruptKernel,
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
282
|
+
commands.addCommand(CommandIDs.interruptKernel, {
|
|
283
|
+
...createSemanticCommand(app, menu.kernelUsers.interruptKernel, {
|
|
284
|
+
label: trans.__('Interrupt Kernel'),
|
|
285
|
+
caption: trans.__('Interrupt the kernel')
|
|
286
|
+
}, trans),
|
|
287
|
+
icon: args => (args.toolbar ? stopIcon : undefined)
|
|
288
|
+
});
|
|
281
289
|
commands.addCommand(CommandIDs.reconnectToKernel, createSemanticCommand(app, menu.kernelUsers.reconnectToKernel, {
|
|
282
290
|
label: trans.__('Reconnect to Kernel')
|
|
283
291
|
}, trans));
|
|
284
|
-
commands.addCommand(CommandIDs.restartKernel,
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
292
|
+
commands.addCommand(CommandIDs.restartKernel, {
|
|
293
|
+
...createSemanticCommand(app, menu.kernelUsers.restartKernel, {
|
|
294
|
+
label: trans.__('Restart Kernel…'),
|
|
295
|
+
caption: trans.__('Restart the kernel')
|
|
296
|
+
}, trans),
|
|
297
|
+
icon: args => (args.toolbar ? refreshIcon : undefined)
|
|
298
|
+
});
|
|
288
299
|
commands.addCommand(CommandIDs.restartKernelAndClear, createSemanticCommand(app, [menu.kernelUsers.restartKernel, menu.kernelUsers.clearWidget], {
|
|
289
300
|
label: trans.__('Restart Kernel and Clear…')
|
|
290
301
|
}, trans));
|
|
@@ -298,7 +309,7 @@ export function createKernelMenu(app, menu, trans) {
|
|
|
298
309
|
commands.addCommand(CommandIDs.shutdownAllKernels, {
|
|
299
310
|
label: trans.__('Shut Down All Kernels…'),
|
|
300
311
|
isEnabled: () => {
|
|
301
|
-
return app.serviceManager.sessions.running().next()
|
|
312
|
+
return !app.serviceManager.sessions.running().next().done;
|
|
302
313
|
},
|
|
303
314
|
execute: () => {
|
|
304
315
|
return showDialog({
|
|
@@ -327,7 +338,7 @@ export function createViewMenu(app, menu, trans) {
|
|
|
327
338
|
commands.addCommand(CommandIDs.matchBrackets, createSemanticCommand(app, menu.editorViewers.toggleMatchBrackets, {
|
|
328
339
|
label: trans.__('Match Brackets')
|
|
329
340
|
}, trans));
|
|
330
|
-
commands.addCommand(CommandIDs.wordWrap, createSemanticCommand(app, menu.editorViewers.
|
|
341
|
+
commands.addCommand(CommandIDs.wordWrap, createSemanticCommand(app, menu.editorViewers.toggleWordWrap, {
|
|
331
342
|
label: trans.__('Wrap Words')
|
|
332
343
|
}, trans));
|
|
333
344
|
}
|
|
@@ -336,18 +347,24 @@ export function createViewMenu(app, menu, trans) {
|
|
|
336
347
|
*/
|
|
337
348
|
export function createRunMenu(app, menu, trans) {
|
|
338
349
|
const commands = app.commands;
|
|
339
|
-
commands.addCommand(CommandIDs.run,
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
350
|
+
commands.addCommand(CommandIDs.run, {
|
|
351
|
+
...createSemanticCommand(app, menu.codeRunners.run, {
|
|
352
|
+
label: trans.__('Run Selected'),
|
|
353
|
+
caption: trans.__('Run Selected')
|
|
354
|
+
}, trans),
|
|
355
|
+
icon: args => (args.toolbar ? runIcon : undefined)
|
|
356
|
+
});
|
|
343
357
|
commands.addCommand(CommandIDs.runAll, createSemanticCommand(app, menu.codeRunners.runAll, {
|
|
344
358
|
label: trans.__('Run All'),
|
|
345
359
|
caption: trans.__('Run All')
|
|
346
360
|
}, trans));
|
|
347
|
-
commands.addCommand(CommandIDs.restartAndRunAll,
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
361
|
+
commands.addCommand(CommandIDs.restartAndRunAll, {
|
|
362
|
+
...createSemanticCommand(app, [menu.codeRunners.restart, menu.codeRunners.runAll], {
|
|
363
|
+
label: trans.__('Restart Kernel and Run All'),
|
|
364
|
+
caption: trans.__('Restart Kernel and Run All')
|
|
365
|
+
}, trans),
|
|
366
|
+
icon: args => (args.toolbar ? fastForwardIcon : undefined)
|
|
367
|
+
});
|
|
351
368
|
}
|
|
352
369
|
/**
|
|
353
370
|
* Create the basic `Tabs` menu.
|
|
@@ -361,6 +378,9 @@ export function createTabsMenu(app, menu, labShell, trans) {
|
|
|
361
378
|
// Command to activate a widget by id.
|
|
362
379
|
commands.addCommand(CommandIDs.activateById, {
|
|
363
380
|
label: args => {
|
|
381
|
+
if (args.id === undefined) {
|
|
382
|
+
return trans.__('Activate a widget by its `id`.');
|
|
383
|
+
}
|
|
364
384
|
const id = args['id'] || '';
|
|
365
385
|
const widget = find(app.shell.widgets('main'), w => w.id === id);
|
|
366
386
|
return (widget && widget.title.label) || '';
|
|
@@ -391,7 +411,7 @@ export function createTabsMenu(app, menu, labShell, trans) {
|
|
|
391
411
|
}
|
|
392
412
|
tabGroup.length = 0;
|
|
393
413
|
let isPreviouslyUsedTabAttached = false;
|
|
394
|
-
|
|
414
|
+
for (const widget of app.shell.widgets('main')) {
|
|
395
415
|
if (widget.id === previousId) {
|
|
396
416
|
isPreviouslyUsedTabAttached = true;
|
|
397
417
|
}
|
|
@@ -399,7 +419,7 @@ export function createTabsMenu(app, menu, labShell, trans) {
|
|
|
399
419
|
command: CommandIDs.activateById,
|
|
400
420
|
args: { id: widget.id }
|
|
401
421
|
});
|
|
402
|
-
}
|
|
422
|
+
}
|
|
403
423
|
disposable = menu.addGroup(tabGroup, 1);
|
|
404
424
|
previousId = isPreviouslyUsedTabAttached ? previousId : '';
|
|
405
425
|
};
|
|
@@ -449,7 +469,7 @@ var Private;
|
|
|
449
469
|
async function loadSettingsMenu(registry, addMenu, menuFactory, translator) {
|
|
450
470
|
var _a;
|
|
451
471
|
const trans = translator.load('jupyterlab');
|
|
452
|
-
let canonical;
|
|
472
|
+
let canonical = null;
|
|
453
473
|
let loaded = {};
|
|
454
474
|
/**
|
|
455
475
|
* Populate the plugin's schema defaults.
|
|
@@ -483,8 +503,14 @@ var Private;
|
|
|
483
503
|
populate(canonical);
|
|
484
504
|
}
|
|
485
505
|
const defaults = (_c = (_b = (_a = canonical.properties) === null || _a === void 0 ? void 0 : _a.menus) === null || _b === void 0 ? void 0 : _b.default) !== null && _c !== void 0 ? _c : [];
|
|
486
|
-
const user =
|
|
487
|
-
|
|
506
|
+
const user = {
|
|
507
|
+
...plugin.data.user,
|
|
508
|
+
menus: (_d = plugin.data.user.menus) !== null && _d !== void 0 ? _d : []
|
|
509
|
+
};
|
|
510
|
+
const composite = {
|
|
511
|
+
...plugin.data.composite,
|
|
512
|
+
menus: SettingRegistry.reconcileMenus(defaults, user.menus)
|
|
513
|
+
};
|
|
488
514
|
plugin.data = { composite, user };
|
|
489
515
|
return plugin;
|
|
490
516
|
},
|
|
@@ -505,7 +531,6 @@ var Private;
|
|
|
505
531
|
});
|
|
506
532
|
// Repopulate the canonical variable after the setting registry has
|
|
507
533
|
// preloaded all initial plugins.
|
|
508
|
-
canonical = null;
|
|
509
534
|
const settings = await registry.load(PLUGIN_ID);
|
|
510
535
|
const currentMenus = (_a = JSONExt.deepCopy(settings.composite.menus)) !== null && _a !== void 0 ? _a : [];
|
|
511
536
|
const menus = new Array();
|
|
@@ -514,7 +539,10 @@ var Private;
|
|
|
514
539
|
.filter(menu => !menu.disabled)
|
|
515
540
|
.map(menu => {
|
|
516
541
|
var _a;
|
|
517
|
-
return
|
|
542
|
+
return {
|
|
543
|
+
...menu,
|
|
544
|
+
items: SettingRegistry.filterDisabledItems((_a = menu.items) !== null && _a !== void 0 ? _a : [])
|
|
545
|
+
};
|
|
518
546
|
}), menuFactory).forEach(menu => {
|
|
519
547
|
menus.push(menu);
|
|
520
548
|
addMenu(menu);
|
|
@@ -547,7 +575,10 @@ var Private;
|
|
|
547
575
|
.filter(menu => !menu.disabled)
|
|
548
576
|
.map(menu => {
|
|
549
577
|
var _a;
|
|
550
|
-
return
|
|
578
|
+
return {
|
|
579
|
+
...menu,
|
|
580
|
+
items: SettingRegistry.filterDisabledItems((_a = menu.items) !== null && _a !== void 0 ? _a : [])
|
|
581
|
+
};
|
|
551
582
|
});
|
|
552
583
|
MenuFactory.updateMenus(menus, toAdd, menuFactory).forEach(menu => {
|
|
553
584
|
addMenu(menu);
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jupyterlab/mainmenu-extension",
|
|
3
|
-
"version": "4.0.0-alpha.
|
|
3
|
+
"version": "4.0.0-alpha.20",
|
|
4
4
|
"description": "JupyterLab - Main Menu Extension",
|
|
5
5
|
"homepage": "https://github.com/jupyterlab/jupyterlab",
|
|
6
6
|
"bugs": {
|
|
@@ -28,7 +28,8 @@
|
|
|
28
28
|
"lib/*.js",
|
|
29
29
|
"schema/*.json",
|
|
30
30
|
"style/**/*.css",
|
|
31
|
-
"style/index.js"
|
|
31
|
+
"style/index.js",
|
|
32
|
+
"src/**/*.{ts,tsx}"
|
|
32
33
|
],
|
|
33
34
|
"scripts": {
|
|
34
35
|
"build": "tsc -b",
|
|
@@ -37,23 +38,23 @@
|
|
|
37
38
|
"watch": "tsc -b --watch"
|
|
38
39
|
},
|
|
39
40
|
"dependencies": {
|
|
40
|
-
"@jupyterlab/application": "^4.0.0-alpha.
|
|
41
|
-
"@jupyterlab/apputils": "^4.0.0-alpha.
|
|
42
|
-
"@jupyterlab/coreutils": "^6.0.0-alpha.
|
|
43
|
-
"@jupyterlab/mainmenu": "^4.0.0-alpha.
|
|
44
|
-
"@jupyterlab/services": "^7.0.0-alpha.
|
|
45
|
-
"@jupyterlab/settingregistry": "^4.0.0-alpha.
|
|
46
|
-
"@jupyterlab/translation": "^4.0.0-alpha.
|
|
47
|
-
"@jupyterlab/ui-components": "^4.0.0-alpha.
|
|
48
|
-
"@lumino/algorithm": "^
|
|
49
|
-
"@lumino/coreutils": "^
|
|
50
|
-
"@lumino/disposable": "^
|
|
51
|
-
"@lumino/widgets": "^
|
|
41
|
+
"@jupyterlab/application": "^4.0.0-alpha.20",
|
|
42
|
+
"@jupyterlab/apputils": "^4.0.0-alpha.20",
|
|
43
|
+
"@jupyterlab/coreutils": "^6.0.0-alpha.20",
|
|
44
|
+
"@jupyterlab/mainmenu": "^4.0.0-alpha.20",
|
|
45
|
+
"@jupyterlab/services": "^7.0.0-alpha.20",
|
|
46
|
+
"@jupyterlab/settingregistry": "^4.0.0-alpha.20",
|
|
47
|
+
"@jupyterlab/translation": "^4.0.0-alpha.20",
|
|
48
|
+
"@jupyterlab/ui-components": "^4.0.0-alpha.35",
|
|
49
|
+
"@lumino/algorithm": "^2.0.0-rc.0",
|
|
50
|
+
"@lumino/coreutils": "^2.0.0-rc.0",
|
|
51
|
+
"@lumino/disposable": "^2.0.0-rc.0",
|
|
52
|
+
"@lumino/widgets": "^2.0.0-rc.0"
|
|
52
53
|
},
|
|
53
54
|
"devDependencies": {
|
|
54
55
|
"rimraf": "~3.0.0",
|
|
55
|
-
"typedoc": "~0.
|
|
56
|
-
"typescript": "~
|
|
56
|
+
"typedoc": "~0.23.25",
|
|
57
|
+
"typescript": "~5.0.0-beta"
|
|
57
58
|
},
|
|
58
59
|
"publishConfig": {
|
|
59
60
|
"access": "public"
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,935 @@
|
|
|
1
|
+
// Copyright (c) Jupyter Development Team.
|
|
2
|
+
// Distributed under the terms of the Modified BSD License.
|
|
3
|
+
/**
|
|
4
|
+
* @packageDocumentation
|
|
5
|
+
* @module mainmenu-extension
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import {
|
|
9
|
+
createSemanticCommand,
|
|
10
|
+
ILabShell,
|
|
11
|
+
IRouter,
|
|
12
|
+
JupyterFrontEnd,
|
|
13
|
+
JupyterFrontEndPlugin
|
|
14
|
+
} from '@jupyterlab/application';
|
|
15
|
+
import {
|
|
16
|
+
Dialog,
|
|
17
|
+
ICommandPalette,
|
|
18
|
+
MenuFactory,
|
|
19
|
+
showDialog
|
|
20
|
+
} from '@jupyterlab/apputils';
|
|
21
|
+
import { PageConfig, URLExt } from '@jupyterlab/coreutils';
|
|
22
|
+
import {
|
|
23
|
+
IEditMenu,
|
|
24
|
+
IFileMenu,
|
|
25
|
+
IHelpMenu,
|
|
26
|
+
IKernelMenu,
|
|
27
|
+
IMainMenu,
|
|
28
|
+
IRunMenu,
|
|
29
|
+
ITabsMenu,
|
|
30
|
+
IViewMenu,
|
|
31
|
+
JupyterLabMenu,
|
|
32
|
+
MainMenu
|
|
33
|
+
} from '@jupyterlab/mainmenu';
|
|
34
|
+
import { ServerConnection } from '@jupyterlab/services';
|
|
35
|
+
import { ISettingRegistry, SettingRegistry } from '@jupyterlab/settingregistry';
|
|
36
|
+
import { ITranslator, TranslationBundle } from '@jupyterlab/translation';
|
|
37
|
+
import {
|
|
38
|
+
fastForwardIcon,
|
|
39
|
+
refreshIcon,
|
|
40
|
+
runIcon,
|
|
41
|
+
stopIcon
|
|
42
|
+
} from '@jupyterlab/ui-components';
|
|
43
|
+
import { find } from '@lumino/algorithm';
|
|
44
|
+
import { JSONExt } from '@lumino/coreutils';
|
|
45
|
+
import { IDisposable } from '@lumino/disposable';
|
|
46
|
+
import { Menu, Widget } from '@lumino/widgets';
|
|
47
|
+
|
|
48
|
+
const PLUGIN_ID = '@jupyterlab/mainmenu-extension:plugin';
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* A namespace for command IDs of semantic extension points.
|
|
52
|
+
*/
|
|
53
|
+
export namespace CommandIDs {
|
|
54
|
+
export const openEdit = 'editmenu:open';
|
|
55
|
+
|
|
56
|
+
export const undo = 'editmenu:undo';
|
|
57
|
+
|
|
58
|
+
export const redo = 'editmenu:redo';
|
|
59
|
+
|
|
60
|
+
export const clearCurrent = 'editmenu:clear-current';
|
|
61
|
+
|
|
62
|
+
export const clearAll = 'editmenu:clear-all';
|
|
63
|
+
|
|
64
|
+
export const find = 'editmenu:find';
|
|
65
|
+
|
|
66
|
+
export const goToLine = 'editmenu:go-to-line';
|
|
67
|
+
|
|
68
|
+
export const openFile = 'filemenu:open';
|
|
69
|
+
|
|
70
|
+
export const closeAndCleanup = 'filemenu:close-and-cleanup';
|
|
71
|
+
|
|
72
|
+
export const createConsole = 'filemenu:create-console';
|
|
73
|
+
|
|
74
|
+
export const shutdown = 'filemenu:shutdown';
|
|
75
|
+
|
|
76
|
+
export const logout = 'filemenu:logout';
|
|
77
|
+
|
|
78
|
+
export const openKernel = 'kernelmenu:open';
|
|
79
|
+
|
|
80
|
+
export const interruptKernel = 'kernelmenu:interrupt';
|
|
81
|
+
|
|
82
|
+
export const reconnectToKernel = 'kernelmenu:reconnect-to-kernel';
|
|
83
|
+
|
|
84
|
+
export const restartKernel = 'kernelmenu:restart';
|
|
85
|
+
|
|
86
|
+
export const restartKernelAndClear = 'kernelmenu:restart-and-clear';
|
|
87
|
+
|
|
88
|
+
export const changeKernel = 'kernelmenu:change';
|
|
89
|
+
|
|
90
|
+
export const shutdownKernel = 'kernelmenu:shutdown';
|
|
91
|
+
|
|
92
|
+
export const shutdownAllKernels = 'kernelmenu:shutdownAll';
|
|
93
|
+
|
|
94
|
+
export const openView = 'viewmenu:open';
|
|
95
|
+
|
|
96
|
+
export const wordWrap = 'viewmenu:word-wrap';
|
|
97
|
+
|
|
98
|
+
export const lineNumbering = 'viewmenu:line-numbering';
|
|
99
|
+
|
|
100
|
+
export const matchBrackets = 'viewmenu:match-brackets';
|
|
101
|
+
|
|
102
|
+
export const openRun = 'runmenu:open';
|
|
103
|
+
|
|
104
|
+
export const run = 'runmenu:run';
|
|
105
|
+
|
|
106
|
+
export const runAll = 'runmenu:run-all';
|
|
107
|
+
|
|
108
|
+
export const restartAndRunAll = 'runmenu:restart-and-run-all';
|
|
109
|
+
|
|
110
|
+
export const runAbove = 'runmenu:run-above';
|
|
111
|
+
|
|
112
|
+
export const runBelow = 'runmenu:run-below';
|
|
113
|
+
|
|
114
|
+
export const openTabs = 'tabsmenu:open';
|
|
115
|
+
|
|
116
|
+
export const activateById = 'tabsmenu:activate-by-id';
|
|
117
|
+
|
|
118
|
+
export const activatePreviouslyUsedTab =
|
|
119
|
+
'tabsmenu:activate-previously-used-tab';
|
|
120
|
+
|
|
121
|
+
export const openSettings = 'settingsmenu:open';
|
|
122
|
+
|
|
123
|
+
export const openHelp = 'helpmenu:open';
|
|
124
|
+
|
|
125
|
+
export const getKernel = 'helpmenu:get-kernel';
|
|
126
|
+
|
|
127
|
+
export const openFirst = 'mainmenu:open-first';
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* A service providing an interface to the main menu.
|
|
132
|
+
*/
|
|
133
|
+
const plugin: JupyterFrontEndPlugin<IMainMenu> = {
|
|
134
|
+
id: PLUGIN_ID,
|
|
135
|
+
requires: [IRouter, ITranslator],
|
|
136
|
+
optional: [ICommandPalette, ILabShell, ISettingRegistry],
|
|
137
|
+
provides: IMainMenu,
|
|
138
|
+
activate: async (
|
|
139
|
+
app: JupyterFrontEnd,
|
|
140
|
+
router: IRouter,
|
|
141
|
+
translator: ITranslator,
|
|
142
|
+
palette: ICommandPalette | null,
|
|
143
|
+
labShell: ILabShell | null,
|
|
144
|
+
registry: ISettingRegistry | null
|
|
145
|
+
): Promise<IMainMenu> => {
|
|
146
|
+
const { commands } = app;
|
|
147
|
+
const trans = translator.load('jupyterlab');
|
|
148
|
+
|
|
149
|
+
const menu = new MainMenu(commands);
|
|
150
|
+
menu.id = 'jp-MainMenu';
|
|
151
|
+
menu.addClass('jp-scrollbar-tiny');
|
|
152
|
+
|
|
153
|
+
// Built menu from settings
|
|
154
|
+
if (registry) {
|
|
155
|
+
await Private.loadSettingsMenu(
|
|
156
|
+
registry,
|
|
157
|
+
(aMenu: JupyterLabMenu) => {
|
|
158
|
+
menu.addMenu(aMenu, false, { rank: aMenu.rank });
|
|
159
|
+
},
|
|
160
|
+
options => MainMenu.generateMenu(commands, options, trans),
|
|
161
|
+
translator
|
|
162
|
+
);
|
|
163
|
+
|
|
164
|
+
// Trigger single update
|
|
165
|
+
menu.update();
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
// Only add quit button if the back-end supports it by checking page config.
|
|
169
|
+
const quitButton = PageConfig.getOption('quitButton').toLowerCase();
|
|
170
|
+
menu.fileMenu.quitEntry = quitButton === 'true';
|
|
171
|
+
|
|
172
|
+
// Create the application menus.
|
|
173
|
+
createEditMenu(app, menu.editMenu, trans);
|
|
174
|
+
createFileMenu(app, menu.fileMenu, router, trans);
|
|
175
|
+
createKernelMenu(app, menu.kernelMenu, trans);
|
|
176
|
+
createRunMenu(app, menu.runMenu, trans);
|
|
177
|
+
createViewMenu(app, menu.viewMenu, trans);
|
|
178
|
+
createHelpMenu(app, menu.helpMenu, trans);
|
|
179
|
+
|
|
180
|
+
// The tabs menu relies on lab shell functionality.
|
|
181
|
+
if (labShell) {
|
|
182
|
+
createTabsMenu(app, menu.tabsMenu, labShell, trans);
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
// Create commands to open the main application menus.
|
|
186
|
+
const activateMenu = (item: Menu) => {
|
|
187
|
+
menu.activeMenu = item;
|
|
188
|
+
menu.openActiveMenu();
|
|
189
|
+
};
|
|
190
|
+
|
|
191
|
+
commands.addCommand(CommandIDs.openEdit, {
|
|
192
|
+
label: trans.__('Open Edit Menu'),
|
|
193
|
+
execute: () => activateMenu(menu.editMenu)
|
|
194
|
+
});
|
|
195
|
+
commands.addCommand(CommandIDs.openFile, {
|
|
196
|
+
label: trans.__('Open File Menu'),
|
|
197
|
+
execute: () => activateMenu(menu.fileMenu)
|
|
198
|
+
});
|
|
199
|
+
commands.addCommand(CommandIDs.openKernel, {
|
|
200
|
+
label: trans.__('Open Kernel Menu'),
|
|
201
|
+
execute: () => activateMenu(menu.kernelMenu)
|
|
202
|
+
});
|
|
203
|
+
commands.addCommand(CommandIDs.openRun, {
|
|
204
|
+
label: trans.__('Open Run Menu'),
|
|
205
|
+
execute: () => activateMenu(menu.runMenu)
|
|
206
|
+
});
|
|
207
|
+
commands.addCommand(CommandIDs.openView, {
|
|
208
|
+
label: trans.__('Open View Menu'),
|
|
209
|
+
execute: () => activateMenu(menu.viewMenu)
|
|
210
|
+
});
|
|
211
|
+
commands.addCommand(CommandIDs.openSettings, {
|
|
212
|
+
label: trans.__('Open Settings Menu'),
|
|
213
|
+
execute: () => activateMenu(menu.settingsMenu)
|
|
214
|
+
});
|
|
215
|
+
commands.addCommand(CommandIDs.openTabs, {
|
|
216
|
+
label: trans.__('Open Tabs Menu'),
|
|
217
|
+
execute: () => activateMenu(menu.tabsMenu)
|
|
218
|
+
});
|
|
219
|
+
commands.addCommand(CommandIDs.openHelp, {
|
|
220
|
+
label: trans.__('Open Help Menu'),
|
|
221
|
+
execute: () => activateMenu(menu.helpMenu)
|
|
222
|
+
});
|
|
223
|
+
commands.addCommand(CommandIDs.openFirst, {
|
|
224
|
+
label: trans.__('Open First Menu'),
|
|
225
|
+
execute: () => {
|
|
226
|
+
menu.activeIndex = 0;
|
|
227
|
+
menu.openActiveMenu();
|
|
228
|
+
}
|
|
229
|
+
});
|
|
230
|
+
|
|
231
|
+
if (palette) {
|
|
232
|
+
// Add some of the commands defined here to the command palette.
|
|
233
|
+
palette.addItem({
|
|
234
|
+
command: CommandIDs.shutdown,
|
|
235
|
+
category: trans.__('Main Area')
|
|
236
|
+
});
|
|
237
|
+
palette.addItem({
|
|
238
|
+
command: CommandIDs.logout,
|
|
239
|
+
category: trans.__('Main Area')
|
|
240
|
+
});
|
|
241
|
+
|
|
242
|
+
palette.addItem({
|
|
243
|
+
command: CommandIDs.shutdownAllKernels,
|
|
244
|
+
category: trans.__('Kernel Operations')
|
|
245
|
+
});
|
|
246
|
+
|
|
247
|
+
palette.addItem({
|
|
248
|
+
command: CommandIDs.activatePreviouslyUsedTab,
|
|
249
|
+
category: trans.__('Main Area')
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
app.shell.add(menu, 'menu', { rank: 100 });
|
|
254
|
+
|
|
255
|
+
return menu;
|
|
256
|
+
}
|
|
257
|
+
};
|
|
258
|
+
|
|
259
|
+
/**
|
|
260
|
+
* Create the basic `Edit` menu.
|
|
261
|
+
*/
|
|
262
|
+
export function createEditMenu(
|
|
263
|
+
app: JupyterFrontEnd,
|
|
264
|
+
menu: IEditMenu,
|
|
265
|
+
trans: TranslationBundle
|
|
266
|
+
): void {
|
|
267
|
+
const commands = app.commands;
|
|
268
|
+
|
|
269
|
+
// Add the undo/redo commands the the Edit menu.
|
|
270
|
+
commands.addCommand(
|
|
271
|
+
CommandIDs.undo,
|
|
272
|
+
createSemanticCommand(
|
|
273
|
+
app,
|
|
274
|
+
menu.undoers.undo,
|
|
275
|
+
{
|
|
276
|
+
label: trans.__('Undo')
|
|
277
|
+
},
|
|
278
|
+
trans
|
|
279
|
+
)
|
|
280
|
+
);
|
|
281
|
+
commands.addCommand(
|
|
282
|
+
CommandIDs.redo,
|
|
283
|
+
createSemanticCommand(
|
|
284
|
+
app,
|
|
285
|
+
menu.undoers.redo,
|
|
286
|
+
{
|
|
287
|
+
label: trans.__('Redo')
|
|
288
|
+
},
|
|
289
|
+
trans
|
|
290
|
+
)
|
|
291
|
+
);
|
|
292
|
+
|
|
293
|
+
// Add the clear commands to the Edit menu.
|
|
294
|
+
commands.addCommand(
|
|
295
|
+
CommandIDs.clearCurrent,
|
|
296
|
+
createSemanticCommand(
|
|
297
|
+
app,
|
|
298
|
+
menu.clearers.clearCurrent,
|
|
299
|
+
{
|
|
300
|
+
label: trans.__('Clear')
|
|
301
|
+
},
|
|
302
|
+
trans
|
|
303
|
+
)
|
|
304
|
+
);
|
|
305
|
+
commands.addCommand(
|
|
306
|
+
CommandIDs.clearAll,
|
|
307
|
+
createSemanticCommand(
|
|
308
|
+
app,
|
|
309
|
+
menu.clearers.clearAll,
|
|
310
|
+
{
|
|
311
|
+
label: trans.__('Clear All')
|
|
312
|
+
},
|
|
313
|
+
trans
|
|
314
|
+
)
|
|
315
|
+
);
|
|
316
|
+
|
|
317
|
+
commands.addCommand(
|
|
318
|
+
CommandIDs.goToLine,
|
|
319
|
+
createSemanticCommand(
|
|
320
|
+
app,
|
|
321
|
+
menu.goToLiners,
|
|
322
|
+
{
|
|
323
|
+
label: trans.__('Go to Line…')
|
|
324
|
+
},
|
|
325
|
+
trans
|
|
326
|
+
)
|
|
327
|
+
);
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
/**
|
|
331
|
+
* Create the basic `File` menu.
|
|
332
|
+
*/
|
|
333
|
+
export function createFileMenu(
|
|
334
|
+
app: JupyterFrontEnd,
|
|
335
|
+
menu: IFileMenu,
|
|
336
|
+
router: IRouter,
|
|
337
|
+
trans: TranslationBundle
|
|
338
|
+
): void {
|
|
339
|
+
const commands = app.commands;
|
|
340
|
+
|
|
341
|
+
// Add a delegator command for closing and cleaning up an activity.
|
|
342
|
+
// This one is a bit different, in that we consider it enabled
|
|
343
|
+
// even if it cannot find a delegate for the activity.
|
|
344
|
+
// In that case, we instead call the application `close` command.
|
|
345
|
+
commands.addCommand(CommandIDs.closeAndCleanup, {
|
|
346
|
+
...createSemanticCommand(
|
|
347
|
+
app,
|
|
348
|
+
menu.closeAndCleaners,
|
|
349
|
+
{
|
|
350
|
+
execute: 'application:close',
|
|
351
|
+
label: trans.__('Close and Shut Down'),
|
|
352
|
+
isEnabled: true
|
|
353
|
+
},
|
|
354
|
+
trans
|
|
355
|
+
),
|
|
356
|
+
isEnabled: () =>
|
|
357
|
+
!!app.shell.currentWidget && !!app.shell.currentWidget.title.closable
|
|
358
|
+
});
|
|
359
|
+
|
|
360
|
+
// Add a delegator command for creating a console for an activity.
|
|
361
|
+
commands.addCommand(
|
|
362
|
+
CommandIDs.createConsole,
|
|
363
|
+
createSemanticCommand(
|
|
364
|
+
app,
|
|
365
|
+
menu.consoleCreators,
|
|
366
|
+
{
|
|
367
|
+
label: trans.__('New Console for Activity')
|
|
368
|
+
},
|
|
369
|
+
trans
|
|
370
|
+
)
|
|
371
|
+
);
|
|
372
|
+
|
|
373
|
+
commands.addCommand(CommandIDs.shutdown, {
|
|
374
|
+
label: trans.__('Shut Down'),
|
|
375
|
+
caption: trans.__('Shut down JupyterLab'),
|
|
376
|
+
isVisible: () => menu.quitEntry,
|
|
377
|
+
isEnabled: () => menu.quitEntry,
|
|
378
|
+
execute: () => {
|
|
379
|
+
return showDialog({
|
|
380
|
+
title: trans.__('Shutdown confirmation'),
|
|
381
|
+
body: trans.__('Please confirm you want to shut down JupyterLab.'),
|
|
382
|
+
buttons: [
|
|
383
|
+
Dialog.cancelButton(),
|
|
384
|
+
Dialog.warnButton({ label: trans.__('Shut Down') })
|
|
385
|
+
]
|
|
386
|
+
}).then(async result => {
|
|
387
|
+
if (result.button.accept) {
|
|
388
|
+
const setting = ServerConnection.makeSettings();
|
|
389
|
+
const apiURL = URLExt.join(setting.baseUrl, 'api/shutdown');
|
|
390
|
+
|
|
391
|
+
// Shutdown all kernel and terminal sessions before shutting down the server
|
|
392
|
+
// If this fails, we continue execution so we can post an api/shutdown request
|
|
393
|
+
try {
|
|
394
|
+
await Promise.all([
|
|
395
|
+
app.serviceManager.sessions.shutdownAll(),
|
|
396
|
+
app.serviceManager.terminals.shutdownAll()
|
|
397
|
+
]);
|
|
398
|
+
} catch (e) {
|
|
399
|
+
// Do nothing
|
|
400
|
+
console.log(`Failed to shutdown sessions and terminals: ${e}`);
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
return ServerConnection.makeRequest(
|
|
404
|
+
apiURL,
|
|
405
|
+
{ method: 'POST' },
|
|
406
|
+
setting
|
|
407
|
+
)
|
|
408
|
+
.then(result => {
|
|
409
|
+
if (result.ok) {
|
|
410
|
+
// Close this window if the shutdown request has been successful
|
|
411
|
+
const body = document.createElement('div');
|
|
412
|
+
const p1 = document.createElement('p');
|
|
413
|
+
p1.textContent = trans.__(
|
|
414
|
+
'You have shut down the Jupyter server. You can now close this tab.'
|
|
415
|
+
);
|
|
416
|
+
const p2 = document.createElement('p');
|
|
417
|
+
p2.textContent = trans.__(
|
|
418
|
+
'To use JupyterLab again, you will need to relaunch it.'
|
|
419
|
+
);
|
|
420
|
+
|
|
421
|
+
body.appendChild(p1);
|
|
422
|
+
body.appendChild(p2);
|
|
423
|
+
void showDialog({
|
|
424
|
+
title: trans.__('Server stopped'),
|
|
425
|
+
body: new Widget({ node: body }),
|
|
426
|
+
buttons: []
|
|
427
|
+
});
|
|
428
|
+
window.close();
|
|
429
|
+
} else {
|
|
430
|
+
throw new ServerConnection.ResponseError(result);
|
|
431
|
+
}
|
|
432
|
+
})
|
|
433
|
+
.catch(data => {
|
|
434
|
+
throw new ServerConnection.NetworkError(data);
|
|
435
|
+
});
|
|
436
|
+
}
|
|
437
|
+
});
|
|
438
|
+
}
|
|
439
|
+
});
|
|
440
|
+
|
|
441
|
+
commands.addCommand(CommandIDs.logout, {
|
|
442
|
+
label: trans.__('Log Out'),
|
|
443
|
+
caption: trans.__('Log out of JupyterLab'),
|
|
444
|
+
isVisible: () => menu.quitEntry,
|
|
445
|
+
isEnabled: () => menu.quitEntry,
|
|
446
|
+
execute: () => {
|
|
447
|
+
router.navigate('/logout', { hard: true });
|
|
448
|
+
}
|
|
449
|
+
});
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
/**
|
|
453
|
+
* Create the basic `Kernel` menu.
|
|
454
|
+
*/
|
|
455
|
+
export function createKernelMenu(
|
|
456
|
+
app: JupyterFrontEnd,
|
|
457
|
+
menu: IKernelMenu,
|
|
458
|
+
trans: TranslationBundle
|
|
459
|
+
): void {
|
|
460
|
+
const commands = app.commands;
|
|
461
|
+
|
|
462
|
+
commands.addCommand(CommandIDs.interruptKernel, {
|
|
463
|
+
...createSemanticCommand(
|
|
464
|
+
app,
|
|
465
|
+
menu.kernelUsers.interruptKernel,
|
|
466
|
+
{
|
|
467
|
+
label: trans.__('Interrupt Kernel'),
|
|
468
|
+
caption: trans.__('Interrupt the kernel')
|
|
469
|
+
},
|
|
470
|
+
trans
|
|
471
|
+
),
|
|
472
|
+
icon: args => (args.toolbar ? stopIcon : undefined)
|
|
473
|
+
});
|
|
474
|
+
|
|
475
|
+
commands.addCommand(
|
|
476
|
+
CommandIDs.reconnectToKernel,
|
|
477
|
+
createSemanticCommand(
|
|
478
|
+
app,
|
|
479
|
+
menu.kernelUsers.reconnectToKernel,
|
|
480
|
+
{
|
|
481
|
+
label: trans.__('Reconnect to Kernel')
|
|
482
|
+
},
|
|
483
|
+
trans
|
|
484
|
+
)
|
|
485
|
+
);
|
|
486
|
+
|
|
487
|
+
commands.addCommand(CommandIDs.restartKernel, {
|
|
488
|
+
...createSemanticCommand(
|
|
489
|
+
app,
|
|
490
|
+
menu.kernelUsers.restartKernel,
|
|
491
|
+
{
|
|
492
|
+
label: trans.__('Restart Kernel…'),
|
|
493
|
+
caption: trans.__('Restart the kernel')
|
|
494
|
+
},
|
|
495
|
+
trans
|
|
496
|
+
),
|
|
497
|
+
icon: args => (args.toolbar ? refreshIcon : undefined)
|
|
498
|
+
});
|
|
499
|
+
|
|
500
|
+
commands.addCommand(
|
|
501
|
+
CommandIDs.restartKernelAndClear,
|
|
502
|
+
createSemanticCommand(
|
|
503
|
+
app,
|
|
504
|
+
[menu.kernelUsers.restartKernel, menu.kernelUsers.clearWidget],
|
|
505
|
+
{
|
|
506
|
+
label: trans.__('Restart Kernel and Clear…')
|
|
507
|
+
},
|
|
508
|
+
trans
|
|
509
|
+
)
|
|
510
|
+
);
|
|
511
|
+
|
|
512
|
+
commands.addCommand(
|
|
513
|
+
CommandIDs.changeKernel,
|
|
514
|
+
createSemanticCommand(
|
|
515
|
+
app,
|
|
516
|
+
menu.kernelUsers.changeKernel,
|
|
517
|
+
{
|
|
518
|
+
label: trans.__('Change Kernel…')
|
|
519
|
+
},
|
|
520
|
+
trans
|
|
521
|
+
)
|
|
522
|
+
);
|
|
523
|
+
|
|
524
|
+
commands.addCommand(
|
|
525
|
+
CommandIDs.shutdownKernel,
|
|
526
|
+
createSemanticCommand(
|
|
527
|
+
app,
|
|
528
|
+
menu.kernelUsers.shutdownKernel,
|
|
529
|
+
{
|
|
530
|
+
label: trans.__('Shut Down Kernel'),
|
|
531
|
+
caption: trans.__('Shut down kernel')
|
|
532
|
+
},
|
|
533
|
+
trans
|
|
534
|
+
)
|
|
535
|
+
);
|
|
536
|
+
|
|
537
|
+
commands.addCommand(CommandIDs.shutdownAllKernels, {
|
|
538
|
+
label: trans.__('Shut Down All Kernels…'),
|
|
539
|
+
isEnabled: () => {
|
|
540
|
+
return !app.serviceManager.sessions.running().next().done;
|
|
541
|
+
},
|
|
542
|
+
execute: () => {
|
|
543
|
+
return showDialog({
|
|
544
|
+
title: trans.__('Shut Down All?'),
|
|
545
|
+
body: trans.__('Shut down all kernels?'),
|
|
546
|
+
buttons: [
|
|
547
|
+
Dialog.cancelButton({ label: trans.__('Dismiss') }),
|
|
548
|
+
Dialog.warnButton({ label: trans.__('Shut Down All') })
|
|
549
|
+
]
|
|
550
|
+
}).then(result => {
|
|
551
|
+
if (result.button.accept) {
|
|
552
|
+
return app.serviceManager.sessions.shutdownAll();
|
|
553
|
+
}
|
|
554
|
+
});
|
|
555
|
+
}
|
|
556
|
+
});
|
|
557
|
+
}
|
|
558
|
+
|
|
559
|
+
/**
|
|
560
|
+
* Create the basic `View` menu.
|
|
561
|
+
*/
|
|
562
|
+
export function createViewMenu(
|
|
563
|
+
app: JupyterFrontEnd,
|
|
564
|
+
menu: IViewMenu,
|
|
565
|
+
trans: TranslationBundle
|
|
566
|
+
): void {
|
|
567
|
+
const commands = app.commands;
|
|
568
|
+
|
|
569
|
+
commands.addCommand(
|
|
570
|
+
CommandIDs.lineNumbering,
|
|
571
|
+
createSemanticCommand(
|
|
572
|
+
app,
|
|
573
|
+
menu.editorViewers.toggleLineNumbers,
|
|
574
|
+
{
|
|
575
|
+
label: trans.__('Show Line Numbers')
|
|
576
|
+
},
|
|
577
|
+
trans
|
|
578
|
+
)
|
|
579
|
+
);
|
|
580
|
+
|
|
581
|
+
commands.addCommand(
|
|
582
|
+
CommandIDs.matchBrackets,
|
|
583
|
+
createSemanticCommand(
|
|
584
|
+
app,
|
|
585
|
+
menu.editorViewers.toggleMatchBrackets,
|
|
586
|
+
{
|
|
587
|
+
label: trans.__('Match Brackets')
|
|
588
|
+
},
|
|
589
|
+
trans
|
|
590
|
+
)
|
|
591
|
+
);
|
|
592
|
+
|
|
593
|
+
commands.addCommand(
|
|
594
|
+
CommandIDs.wordWrap,
|
|
595
|
+
createSemanticCommand(
|
|
596
|
+
app,
|
|
597
|
+
menu.editorViewers.toggleWordWrap,
|
|
598
|
+
{
|
|
599
|
+
label: trans.__('Wrap Words')
|
|
600
|
+
},
|
|
601
|
+
trans
|
|
602
|
+
)
|
|
603
|
+
);
|
|
604
|
+
}
|
|
605
|
+
|
|
606
|
+
/**
|
|
607
|
+
* Create the basic `Run` menu.
|
|
608
|
+
*/
|
|
609
|
+
export function createRunMenu(
|
|
610
|
+
app: JupyterFrontEnd,
|
|
611
|
+
menu: IRunMenu,
|
|
612
|
+
trans: TranslationBundle
|
|
613
|
+
): void {
|
|
614
|
+
const commands = app.commands;
|
|
615
|
+
|
|
616
|
+
commands.addCommand(CommandIDs.run, {
|
|
617
|
+
...createSemanticCommand(
|
|
618
|
+
app,
|
|
619
|
+
menu.codeRunners.run,
|
|
620
|
+
{
|
|
621
|
+
label: trans.__('Run Selected'),
|
|
622
|
+
caption: trans.__('Run Selected')
|
|
623
|
+
},
|
|
624
|
+
trans
|
|
625
|
+
),
|
|
626
|
+
icon: args => (args.toolbar ? runIcon : undefined)
|
|
627
|
+
});
|
|
628
|
+
|
|
629
|
+
commands.addCommand(
|
|
630
|
+
CommandIDs.runAll,
|
|
631
|
+
createSemanticCommand(
|
|
632
|
+
app,
|
|
633
|
+
menu.codeRunners.runAll,
|
|
634
|
+
{
|
|
635
|
+
label: trans.__('Run All'),
|
|
636
|
+
caption: trans.__('Run All')
|
|
637
|
+
},
|
|
638
|
+
trans
|
|
639
|
+
)
|
|
640
|
+
);
|
|
641
|
+
|
|
642
|
+
commands.addCommand(CommandIDs.restartAndRunAll, {
|
|
643
|
+
...createSemanticCommand(
|
|
644
|
+
app,
|
|
645
|
+
[menu.codeRunners.restart, menu.codeRunners.runAll],
|
|
646
|
+
{
|
|
647
|
+
label: trans.__('Restart Kernel and Run All'),
|
|
648
|
+
caption: trans.__('Restart Kernel and Run All')
|
|
649
|
+
},
|
|
650
|
+
trans
|
|
651
|
+
),
|
|
652
|
+
icon: args => (args.toolbar ? fastForwardIcon : undefined)
|
|
653
|
+
});
|
|
654
|
+
}
|
|
655
|
+
|
|
656
|
+
/**
|
|
657
|
+
* Create the basic `Tabs` menu.
|
|
658
|
+
*/
|
|
659
|
+
export function createTabsMenu(
|
|
660
|
+
app: JupyterFrontEnd,
|
|
661
|
+
menu: ITabsMenu,
|
|
662
|
+
labShell: ILabShell | null,
|
|
663
|
+
trans: TranslationBundle
|
|
664
|
+
): void {
|
|
665
|
+
const commands = app.commands;
|
|
666
|
+
|
|
667
|
+
// A list of the active tabs in the main area.
|
|
668
|
+
const tabGroup: Menu.IItemOptions[] = [];
|
|
669
|
+
// A disposable for getting rid of the out-of-date tabs list.
|
|
670
|
+
let disposable: IDisposable;
|
|
671
|
+
|
|
672
|
+
// Command to activate a widget by id.
|
|
673
|
+
commands.addCommand(CommandIDs.activateById, {
|
|
674
|
+
label: args => {
|
|
675
|
+
if (args.id === undefined) {
|
|
676
|
+
return trans.__('Activate a widget by its `id`.');
|
|
677
|
+
}
|
|
678
|
+
const id = args['id'] || '';
|
|
679
|
+
const widget = find(app.shell.widgets('main'), w => w.id === id);
|
|
680
|
+
return (widget && widget.title.label) || '';
|
|
681
|
+
},
|
|
682
|
+
isToggled: args => {
|
|
683
|
+
const id = args['id'] || '';
|
|
684
|
+
return !!app.shell.currentWidget && app.shell.currentWidget.id === id;
|
|
685
|
+
},
|
|
686
|
+
execute: args => app.shell.activateById((args['id'] as string) || '')
|
|
687
|
+
});
|
|
688
|
+
|
|
689
|
+
let previousId = '';
|
|
690
|
+
// Command to toggle between the current
|
|
691
|
+
// tab and the last modified tab.
|
|
692
|
+
commands.addCommand(CommandIDs.activatePreviouslyUsedTab, {
|
|
693
|
+
label: trans.__('Activate Previously Used Tab'),
|
|
694
|
+
isEnabled: () => !!previousId,
|
|
695
|
+
execute: () => commands.execute(CommandIDs.activateById, { id: previousId })
|
|
696
|
+
});
|
|
697
|
+
|
|
698
|
+
if (labShell) {
|
|
699
|
+
void app.restored.then(() => {
|
|
700
|
+
// Iterate over the current widgets in the
|
|
701
|
+
// main area, and add them to the tab group
|
|
702
|
+
// of the menu.
|
|
703
|
+
const populateTabs = () => {
|
|
704
|
+
// remove the previous tab list
|
|
705
|
+
if (disposable && !disposable.isDisposed) {
|
|
706
|
+
disposable.dispose();
|
|
707
|
+
}
|
|
708
|
+
tabGroup.length = 0;
|
|
709
|
+
|
|
710
|
+
let isPreviouslyUsedTabAttached = false;
|
|
711
|
+
for (const widget of app.shell.widgets('main')) {
|
|
712
|
+
if (widget.id === previousId) {
|
|
713
|
+
isPreviouslyUsedTabAttached = true;
|
|
714
|
+
}
|
|
715
|
+
tabGroup.push({
|
|
716
|
+
command: CommandIDs.activateById,
|
|
717
|
+
args: { id: widget.id }
|
|
718
|
+
});
|
|
719
|
+
}
|
|
720
|
+
disposable = menu.addGroup(tabGroup, 1);
|
|
721
|
+
previousId = isPreviouslyUsedTabAttached ? previousId : '';
|
|
722
|
+
};
|
|
723
|
+
populateTabs();
|
|
724
|
+
labShell.layoutModified.connect(() => {
|
|
725
|
+
populateTabs();
|
|
726
|
+
});
|
|
727
|
+
// Update the ID of the previous active tab if a new tab is selected.
|
|
728
|
+
labShell.currentChanged.connect((_, args) => {
|
|
729
|
+
const widget = args.oldValue;
|
|
730
|
+
if (!widget) {
|
|
731
|
+
return;
|
|
732
|
+
}
|
|
733
|
+
previousId = widget.id;
|
|
734
|
+
});
|
|
735
|
+
});
|
|
736
|
+
}
|
|
737
|
+
}
|
|
738
|
+
|
|
739
|
+
/**
|
|
740
|
+
* Create the basic `Help` menu.
|
|
741
|
+
*/
|
|
742
|
+
export function createHelpMenu(
|
|
743
|
+
app: JupyterFrontEnd,
|
|
744
|
+
menu: IHelpMenu,
|
|
745
|
+
trans: TranslationBundle
|
|
746
|
+
): void {
|
|
747
|
+
app.commands.addCommand(
|
|
748
|
+
CommandIDs.getKernel,
|
|
749
|
+
createSemanticCommand(
|
|
750
|
+
app,
|
|
751
|
+
menu.getKernel,
|
|
752
|
+
{
|
|
753
|
+
label: trans.__('Get Kernel'),
|
|
754
|
+
isVisible: false
|
|
755
|
+
},
|
|
756
|
+
trans
|
|
757
|
+
)
|
|
758
|
+
);
|
|
759
|
+
}
|
|
760
|
+
|
|
761
|
+
export default plugin;
|
|
762
|
+
|
|
763
|
+
/**
|
|
764
|
+
* A namespace for Private data.
|
|
765
|
+
*/
|
|
766
|
+
namespace Private {
|
|
767
|
+
async function displayInformation(trans: TranslationBundle): Promise<void> {
|
|
768
|
+
const result = await showDialog({
|
|
769
|
+
title: trans.__('Information'),
|
|
770
|
+
body: trans.__(
|
|
771
|
+
'Menu customization has changed. You will need to reload JupyterLab to see the changes.'
|
|
772
|
+
),
|
|
773
|
+
buttons: [
|
|
774
|
+
Dialog.cancelButton(),
|
|
775
|
+
Dialog.okButton({ label: trans.__('Reload') })
|
|
776
|
+
]
|
|
777
|
+
});
|
|
778
|
+
|
|
779
|
+
if (result.button.accept) {
|
|
780
|
+
location.reload();
|
|
781
|
+
}
|
|
782
|
+
}
|
|
783
|
+
|
|
784
|
+
export async function loadSettingsMenu(
|
|
785
|
+
registry: ISettingRegistry,
|
|
786
|
+
addMenu: (menu: Menu) => void,
|
|
787
|
+
menuFactory: (options: IMainMenu.IMenuOptions) => JupyterLabMenu,
|
|
788
|
+
translator: ITranslator
|
|
789
|
+
): Promise<void> {
|
|
790
|
+
const trans = translator.load('jupyterlab');
|
|
791
|
+
let canonical: ISettingRegistry.ISchema | null = null;
|
|
792
|
+
let loaded: { [name: string]: ISettingRegistry.IMenu[] } = {};
|
|
793
|
+
|
|
794
|
+
/**
|
|
795
|
+
* Populate the plugin's schema defaults.
|
|
796
|
+
*/
|
|
797
|
+
function populate(schema: ISettingRegistry.ISchema) {
|
|
798
|
+
loaded = {};
|
|
799
|
+
const pluginDefaults = Object.keys(registry.plugins)
|
|
800
|
+
.map(plugin => {
|
|
801
|
+
const menus =
|
|
802
|
+
registry.plugins[plugin]!.schema['jupyter.lab.menus']?.main ?? [];
|
|
803
|
+
loaded[plugin] = menus;
|
|
804
|
+
return menus;
|
|
805
|
+
})
|
|
806
|
+
.concat([schema['jupyter.lab.menus']?.main ?? []])
|
|
807
|
+
.reduceRight(
|
|
808
|
+
(acc, val) => SettingRegistry.reconcileMenus(acc, val, true),
|
|
809
|
+
schema.properties!.menus.default as any[]
|
|
810
|
+
);
|
|
811
|
+
|
|
812
|
+
// Apply default value as last step to take into account overrides.json
|
|
813
|
+
// The standard default being [] as the plugin must use `jupyter.lab.menus.main`
|
|
814
|
+
// to define their default value.
|
|
815
|
+
schema.properties!.menus.default = SettingRegistry.reconcileMenus(
|
|
816
|
+
pluginDefaults,
|
|
817
|
+
schema.properties!.menus.default as any[],
|
|
818
|
+
true
|
|
819
|
+
)
|
|
820
|
+
// flatten one level
|
|
821
|
+
.sort((a, b) => (a.rank ?? Infinity) - (b.rank ?? Infinity));
|
|
822
|
+
}
|
|
823
|
+
|
|
824
|
+
// Transform the plugin object to return different schema than the default.
|
|
825
|
+
registry.transform(PLUGIN_ID, {
|
|
826
|
+
compose: plugin => {
|
|
827
|
+
// Only override the canonical schema the first time.
|
|
828
|
+
if (!canonical) {
|
|
829
|
+
canonical = JSONExt.deepCopy(plugin.schema);
|
|
830
|
+
populate(canonical);
|
|
831
|
+
}
|
|
832
|
+
|
|
833
|
+
const defaults = canonical.properties?.menus?.default ?? [];
|
|
834
|
+
const user = {
|
|
835
|
+
...plugin.data.user,
|
|
836
|
+
menus: plugin.data.user.menus ?? []
|
|
837
|
+
};
|
|
838
|
+
const composite = {
|
|
839
|
+
...plugin.data.composite,
|
|
840
|
+
menus: SettingRegistry.reconcileMenus(
|
|
841
|
+
defaults as ISettingRegistry.IMenu[],
|
|
842
|
+
user.menus as ISettingRegistry.IMenu[]
|
|
843
|
+
)
|
|
844
|
+
};
|
|
845
|
+
|
|
846
|
+
plugin.data = { composite, user };
|
|
847
|
+
|
|
848
|
+
return plugin;
|
|
849
|
+
},
|
|
850
|
+
fetch: plugin => {
|
|
851
|
+
// Only override the canonical schema the first time.
|
|
852
|
+
if (!canonical) {
|
|
853
|
+
canonical = JSONExt.deepCopy(plugin.schema);
|
|
854
|
+
populate(canonical);
|
|
855
|
+
}
|
|
856
|
+
|
|
857
|
+
return {
|
|
858
|
+
data: plugin.data,
|
|
859
|
+
id: plugin.id,
|
|
860
|
+
raw: plugin.raw,
|
|
861
|
+
schema: canonical,
|
|
862
|
+
version: plugin.version
|
|
863
|
+
};
|
|
864
|
+
}
|
|
865
|
+
});
|
|
866
|
+
|
|
867
|
+
// Repopulate the canonical variable after the setting registry has
|
|
868
|
+
// preloaded all initial plugins.
|
|
869
|
+
const settings = await registry.load(PLUGIN_ID);
|
|
870
|
+
|
|
871
|
+
const currentMenus: ISettingRegistry.IMenu[] =
|
|
872
|
+
JSONExt.deepCopy(settings.composite.menus as any) ?? [];
|
|
873
|
+
const menus = new Array<Menu>();
|
|
874
|
+
// Create menu for non-disabled element
|
|
875
|
+
MenuFactory.createMenus(
|
|
876
|
+
currentMenus
|
|
877
|
+
.filter(menu => !menu.disabled)
|
|
878
|
+
.map(menu => {
|
|
879
|
+
return {
|
|
880
|
+
...menu,
|
|
881
|
+
items: SettingRegistry.filterDisabledItems(menu.items ?? [])
|
|
882
|
+
};
|
|
883
|
+
}),
|
|
884
|
+
menuFactory
|
|
885
|
+
).forEach(menu => {
|
|
886
|
+
menus.push(menu);
|
|
887
|
+
addMenu(menu);
|
|
888
|
+
});
|
|
889
|
+
|
|
890
|
+
settings.changed.connect(() => {
|
|
891
|
+
// As extension may change menu through API, prompt the user to reload if the
|
|
892
|
+
// menu has been updated.
|
|
893
|
+
const newMenus = (settings.composite.menus as any) ?? [];
|
|
894
|
+
if (!JSONExt.deepEqual(currentMenus, newMenus)) {
|
|
895
|
+
void displayInformation(trans);
|
|
896
|
+
}
|
|
897
|
+
});
|
|
898
|
+
|
|
899
|
+
registry.pluginChanged.connect(async (sender, plugin) => {
|
|
900
|
+
if (plugin !== PLUGIN_ID) {
|
|
901
|
+
// If the plugin changed its menu.
|
|
902
|
+
const oldMenus = loaded[plugin] ?? [];
|
|
903
|
+
const newMenus =
|
|
904
|
+
registry.plugins[plugin]!.schema['jupyter.lab.menus']?.main ?? [];
|
|
905
|
+
if (!JSONExt.deepEqual(oldMenus, newMenus)) {
|
|
906
|
+
if (loaded[plugin]) {
|
|
907
|
+
// The plugin has changed, request the user to reload the UI - this should not happen
|
|
908
|
+
await displayInformation(trans);
|
|
909
|
+
} else {
|
|
910
|
+
// The plugin was not yet loaded when the menu was built => update the menu
|
|
911
|
+
loaded[plugin] = JSONExt.deepCopy(newMenus);
|
|
912
|
+
// Merge potential disabled state
|
|
913
|
+
const toAdd = SettingRegistry.reconcileMenus(
|
|
914
|
+
newMenus,
|
|
915
|
+
currentMenus,
|
|
916
|
+
false,
|
|
917
|
+
false
|
|
918
|
+
)
|
|
919
|
+
.filter(menu => !menu.disabled)
|
|
920
|
+
.map(menu => {
|
|
921
|
+
return {
|
|
922
|
+
...menu,
|
|
923
|
+
items: SettingRegistry.filterDisabledItems(menu.items ?? [])
|
|
924
|
+
};
|
|
925
|
+
});
|
|
926
|
+
|
|
927
|
+
MenuFactory.updateMenus(menus, toAdd, menuFactory).forEach(menu => {
|
|
928
|
+
addMenu(menu);
|
|
929
|
+
});
|
|
930
|
+
}
|
|
931
|
+
}
|
|
932
|
+
}
|
|
933
|
+
});
|
|
934
|
+
}
|
|
935
|
+
}
|