@jupyterlab/mainmenu 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/mainmenu.d.ts CHANGED
@@ -54,7 +54,7 @@ export declare class MainMenu extends MenuBar implements IMainMenu {
54
54
  /**
55
55
  * Add a new menu to the main menu bar.
56
56
  */
57
- addMenu(menu: Menu, options?: IMainMenu.IAddOptions): void;
57
+ addMenu(menu: Menu, update?: boolean, options?: IMainMenu.IAddOptions): void;
58
58
  /**
59
59
  * Dispose of the resources held by the menu bar.
60
60
  */
package/lib/mainmenu.js CHANGED
@@ -19,7 +19,8 @@ export class MainMenu extends MenuBar {
19
19
  * Construct the main menu bar.
20
20
  */
21
21
  constructor(commands) {
22
- super();
22
+ let options = { forceItemsPosition: { forceX: false, forceY: true } };
23
+ super(options);
23
24
  this._items = [];
24
25
  this._commands = commands;
25
26
  }
@@ -130,7 +131,7 @@ export class MainMenu extends MenuBar {
130
131
  /**
131
132
  * Add a new menu to the main menu bar.
132
133
  */
133
- addMenu(menu, options = {}) {
134
+ addMenu(menu, update = true, options = {}) {
134
135
  if (ArrayExt.firstIndexOf(this.menus, menu) > -1) {
135
136
  return;
136
137
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mainmenu.js","sourceRoot":"","sources":["../src/mainmenu.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mainmenu.js","sourceRoot":"","sources":["../src/mainmenu.ts"],"names":[],"mappings":"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"}
package/lib/tokens.d.ts CHANGED
@@ -19,8 +19,12 @@ export declare const IMainMenu: Token<IMainMenu>;
19
19
  export interface IMainMenu {
20
20
  /**
21
21
  * Add a new menu to the main menu bar.
22
+ *
23
+ * @param menu The menu to add
24
+ * @param update Whether to update the menu bar or not
25
+ * @param options Options for adding the menu
22
26
  */
23
- addMenu(menu: Menu, options?: IMainMenu.IAddOptions): void;
27
+ addMenu(menu: Menu, update?: boolean, options?: IMainMenu.IAddOptions): void;
24
28
  /**
25
29
  * The application "File" menu.
26
30
  */
package/lib/tokens.js CHANGED
@@ -1,7 +1,6 @@
1
1
  // Copyright (c) Jupyter Development Team.
2
2
  // Distributed under the terms of the Modified BSD License.
3
3
  import { Token } from '@lumino/coreutils';
4
- /* tslint:disable */
5
4
  /**
6
5
  * The main menu token.
7
6
  */
package/lib/tokens.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,2DAA2D;AAG3D,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAW1C,oBAAoB;AACpB;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,KAAK,CAAY,gCAAgC,CAAC,CAAC"}
1
+ {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../src/tokens.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,2DAA2D;AAG3D,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAW1C;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,KAAK,CAAY,gCAAgC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jupyterlab/mainmenu",
3
- "version": "4.0.0-alpha.2",
3
+ "version": "4.0.0-alpha.20",
4
4
  "description": "JupyterLab - Main Menu",
5
5
  "homepage": "https://github.com/jupyterlab/jupyterlab",
6
6
  "bugs": {
@@ -27,7 +27,8 @@
27
27
  "lib/*.js.map",
28
28
  "lib/*.js",
29
29
  "style/**/*.css",
30
- "style/index.js"
30
+ "style/index.js",
31
+ "src/**/*.{ts,tsx}"
31
32
  ],
32
33
  "scripts": {
33
34
  "build": "tsc -b",
@@ -41,22 +42,20 @@
41
42
  "watch": "tsc -b --watch"
42
43
  },
43
44
  "dependencies": {
44
- "@jupyterlab/apputils": "^4.0.0-alpha.2",
45
- "@jupyterlab/translation": "^4.0.0-alpha.2",
46
- "@jupyterlab/ui-components": "^4.0.0-alpha.17",
47
- "@lumino/algorithm": "^1.9.1",
48
- "@lumino/commands": "^1.19.0",
49
- "@lumino/coreutils": "^1.11.1",
50
- "@lumino/widgets": "^1.30.0"
45
+ "@jupyterlab/apputils": "^4.0.0-alpha.20",
46
+ "@jupyterlab/translation": "^4.0.0-alpha.20",
47
+ "@jupyterlab/ui-components": "^4.0.0-alpha.35",
48
+ "@lumino/algorithm": "^2.0.0-rc.0",
49
+ "@lumino/commands": "^2.0.0-rc.0",
50
+ "@lumino/coreutils": "^2.0.0-rc.0",
51
+ "@lumino/widgets": "^2.0.0-rc.0"
51
52
  },
52
53
  "devDependencies": {
53
- "@jupyterlab/testutils": "^4.0.0-alpha.2",
54
- "@types/jest": "^26.0.10",
55
- "jest": "^26.4.2",
54
+ "@jupyterlab/testing": "^4.0.0-alpha.20",
55
+ "@types/jest": "^29.2.0",
56
56
  "rimraf": "~3.0.0",
57
- "ts-jest": "^26.3.0",
58
- "typedoc": "~0.21.2",
59
- "typescript": "~4.5.2"
57
+ "typedoc": "~0.23.25",
58
+ "typescript": "~5.0.0-beta"
60
59
  },
61
60
  "publishConfig": {
62
61
  "access": "public"
package/src/edit.ts ADDED
@@ -0,0 +1,99 @@
1
+ // Copyright (c) Jupyter Development Team.
2
+ // Distributed under the terms of the Modified BSD License.
3
+
4
+ import { IRankedMenu, RankedMenu } from '@jupyterlab/ui-components';
5
+ import { SemanticCommand } from '@jupyterlab/apputils';
6
+
7
+ /**
8
+ * An interface for an Edit menu.
9
+ */
10
+ export interface IEditMenu extends IRankedMenu {
11
+ /**
12
+ * Semantic commands IUndoers for the Edit menu.
13
+ */
14
+ readonly undoers: IEditMenu.IUndoer;
15
+
16
+ /**
17
+ * Semantic commands IClearers for the Edit menu.
18
+ */
19
+ readonly clearers: IEditMenu.IClearer;
20
+
21
+ /**
22
+ * Semantic commands IGoToLiners for the Edit menu.
23
+ */
24
+ readonly goToLiners: SemanticCommand;
25
+ }
26
+
27
+ /**
28
+ * An extensible Edit menu for the application.
29
+ */
30
+ export class EditMenu extends RankedMenu implements IEditMenu {
31
+ /**
32
+ * Construct the edit menu.
33
+ */
34
+ constructor(options: IRankedMenu.IOptions) {
35
+ super(options);
36
+
37
+ this.undoers = {
38
+ redo: new SemanticCommand(),
39
+ undo: new SemanticCommand()
40
+ };
41
+
42
+ this.clearers = {
43
+ clearAll: new SemanticCommand(),
44
+ clearCurrent: new SemanticCommand()
45
+ };
46
+
47
+ this.goToLiners = new SemanticCommand();
48
+ }
49
+
50
+ /**
51
+ * Semantic commands IUndoers for the Edit menu.
52
+ */
53
+ readonly undoers: IEditMenu.IUndoer;
54
+
55
+ /**
56
+ * Semantic commands IClearers for the Edit menu.
57
+ */
58
+ readonly clearers: IEditMenu.IClearer;
59
+
60
+ /**
61
+ * Semantic commands IGoToLiners for the Edit menu.
62
+ */
63
+ readonly goToLiners: SemanticCommand;
64
+ }
65
+
66
+ /**
67
+ * Namespace for IEditMenu
68
+ */
69
+ export namespace IEditMenu {
70
+ /**
71
+ * Interface for an activity that uses Undo/Redo.
72
+ */
73
+ export interface IUndoer {
74
+ /**
75
+ * A semantic command to execute an undo command for the activity.
76
+ */
77
+ undo: SemanticCommand;
78
+
79
+ /**
80
+ * A semantic command to execute a redo command for the activity.
81
+ */
82
+ redo: SemanticCommand;
83
+ }
84
+
85
+ /**
86
+ * Interface for an activity that wants to register a 'Clear...' menu item
87
+ */
88
+ export interface IClearer {
89
+ /**
90
+ * A semantic command to clear the currently portion of activity.
91
+ */
92
+ clearCurrent: SemanticCommand;
93
+
94
+ /**
95
+ * A semantic command to clear all of an activity.
96
+ */
97
+ clearAll: SemanticCommand;
98
+ }
99
+ }
package/src/file.ts ADDED
@@ -0,0 +1,84 @@
1
+ // Copyright (c) Jupyter Development Team.
2
+ // Distributed under the terms of the Modified BSD License.
3
+
4
+ import { IRankedMenu, RankedMenu } from '@jupyterlab/ui-components';
5
+ import { find } from '@lumino/algorithm';
6
+ import { SemanticCommand } from '@jupyterlab/apputils';
7
+
8
+ /**
9
+ * An interface for a File menu.
10
+ */
11
+ export interface IFileMenu extends IRankedMenu {
12
+ /**
13
+ * Option to add a `Quit` entry in the File menu
14
+ */
15
+ quitEntry: boolean;
16
+
17
+ /**
18
+ * A submenu for creating new files/launching new activities.
19
+ */
20
+ readonly newMenu: IRankedMenu;
21
+
22
+ /**
23
+ * The close and cleanup semantic command.
24
+ */
25
+ readonly closeAndCleaners: SemanticCommand;
26
+
27
+ /**
28
+ * The console creator semantic command.
29
+ */
30
+ readonly consoleCreators: SemanticCommand;
31
+ }
32
+
33
+ /**
34
+ * An extensible FileMenu for the application.
35
+ */
36
+ export class FileMenu extends RankedMenu implements IFileMenu {
37
+ constructor(options: IRankedMenu.IOptions) {
38
+ super(options);
39
+ this.quitEntry = false;
40
+
41
+ this.closeAndCleaners = new SemanticCommand();
42
+ this.consoleCreators = new SemanticCommand();
43
+ }
44
+
45
+ /**
46
+ * The New submenu.
47
+ */
48
+ get newMenu(): RankedMenu {
49
+ if (!this._newMenu) {
50
+ this._newMenu =
51
+ (find(this.items, menu => menu.submenu?.id === 'jp-mainmenu-file-new')
52
+ ?.submenu as RankedMenu) ??
53
+ new RankedMenu({
54
+ commands: this.commands
55
+ });
56
+ }
57
+ return this._newMenu;
58
+ }
59
+
60
+ /**
61
+ * The close and cleanup semantic command.
62
+ */
63
+ readonly closeAndCleaners: SemanticCommand;
64
+
65
+ /**
66
+ * The console creator semantic command.
67
+ */
68
+ readonly consoleCreators: SemanticCommand;
69
+
70
+ /**
71
+ * Dispose of the resources held by the file menu.
72
+ */
73
+ dispose(): void {
74
+ this._newMenu?.dispose();
75
+ super.dispose();
76
+ }
77
+
78
+ /**
79
+ * Option to add a `Quit` entry in File menu
80
+ */
81
+ public quitEntry: boolean;
82
+
83
+ private _newMenu: RankedMenu;
84
+ }
package/src/help.ts ADDED
@@ -0,0 +1,43 @@
1
+ // Copyright (c) Jupyter Development Team.
2
+ // Distributed under the terms of the Modified BSD License.
3
+
4
+ import { IRankedMenu, RankedMenu } from '@jupyterlab/ui-components';
5
+ import { SemanticCommand } from '@jupyterlab/apputils';
6
+
7
+ /**
8
+ * An interface for a Help menu.
9
+ */
10
+ export interface IHelpMenu extends IRankedMenu {
11
+ /**
12
+ * A semantic command to get the kernel for the help menu.
13
+ * This is used to populate additional help
14
+ * links provided by the kernel of a widget.
15
+ *
16
+ * #### Note
17
+ * The command must return a Kernel.IKernelConnection object
18
+ */
19
+ readonly getKernel: SemanticCommand;
20
+ }
21
+
22
+ /**
23
+ * An extensible Help menu for the application.
24
+ */
25
+ export class HelpMenu extends RankedMenu implements IHelpMenu {
26
+ /**
27
+ * Construct the help menu.
28
+ */
29
+ constructor(options: IRankedMenu.IOptions) {
30
+ super(options);
31
+ this.getKernel = new SemanticCommand();
32
+ }
33
+
34
+ /**
35
+ * A semantic command to get the kernel for the help menu.
36
+ * This is used to populate additional help
37
+ * links provided by the kernel of a widget.
38
+ *
39
+ * #### Note
40
+ * The command must return a Kernel.IKernelConnection object
41
+ */
42
+ readonly getKernel: SemanticCommand;
43
+ }
package/src/index.ts ADDED
@@ -0,0 +1,25 @@
1
+ // Copyright (c) Jupyter Development Team.
2
+ // Distributed under the terms of the Modified BSD License.
3
+ /**
4
+ * @packageDocumentation
5
+ * @module mainmenu
6
+ */
7
+
8
+ export * from './mainmenu';
9
+ export * from './edit';
10
+ export * from './file';
11
+ export * from './help';
12
+ export * from './kernel';
13
+ export * from './run';
14
+ export * from './settings';
15
+ export * from './view';
16
+ export * from './tabs';
17
+ export * from './tokens';
18
+
19
+ /**
20
+ * @deprecated since version 3.1
21
+ */
22
+ export {
23
+ IRankedMenu as IJupyterLabMenu,
24
+ RankedMenu as JupyterLabMenu
25
+ } from '@jupyterlab/ui-components';
package/src/kernel.ts ADDED
@@ -0,0 +1,82 @@
1
+ // Copyright (c) Jupyter Development Team.
2
+ // Distributed under the terms of the Modified BSD License.
3
+
4
+ import { IRankedMenu, RankedMenu } from '@jupyterlab/ui-components';
5
+ import { SemanticCommand } from '@jupyterlab/apputils';
6
+
7
+ /**
8
+ * An interface for a Kernel menu.
9
+ */
10
+ export interface IKernelMenu extends IRankedMenu {
11
+ /**
12
+ * Semantic commands IKernelUsers for the Kernel menu.
13
+ */
14
+ readonly kernelUsers: IKernelMenu.IKernelUser;
15
+ }
16
+
17
+ /**
18
+ * An extensible Kernel menu for the application.
19
+ */
20
+ export class KernelMenu extends RankedMenu implements IKernelMenu {
21
+ /**
22
+ * Construct the kernel menu.
23
+ */
24
+ constructor(options: IRankedMenu.IOptions) {
25
+ super(options);
26
+ this.kernelUsers = {
27
+ changeKernel: new SemanticCommand(),
28
+ clearWidget: new SemanticCommand(),
29
+ interruptKernel: new SemanticCommand(),
30
+ reconnectToKernel: new SemanticCommand(),
31
+ restartKernel: new SemanticCommand(),
32
+ shutdownKernel: new SemanticCommand()
33
+ };
34
+ }
35
+
36
+ /**
37
+ * Semantic commands IKernelUsers for the Kernel menu.
38
+ */
39
+ readonly kernelUsers: IKernelMenu.IKernelUser;
40
+ }
41
+
42
+ /**
43
+ * Namespace for IKernelMenu
44
+ */
45
+ export namespace IKernelMenu {
46
+ /**
47
+ * Interface for a Kernel user to register itself
48
+ * with the IKernelMenu's semantic extension points.
49
+ */
50
+ export interface IKernelUser {
51
+ /**
52
+ * A semantic command to interrupt the kernel.
53
+ */
54
+ interruptKernel: SemanticCommand;
55
+
56
+ /**
57
+ * A semantic command to reconnect to the kernel
58
+ */
59
+ reconnectToKernel: SemanticCommand;
60
+
61
+ /**
62
+ * A semantic command to restart the kernel, which
63
+ * returns a promise of whether the kernel was restarted.
64
+ */
65
+ restartKernel: SemanticCommand;
66
+
67
+ /**
68
+ * A semantic command to clear the widget.
69
+ */
70
+ clearWidget: SemanticCommand;
71
+
72
+ /**
73
+ * A semantic command to change the kernel.
74
+ */
75
+ changeKernel: SemanticCommand;
76
+
77
+ /**
78
+ * A semantic command to shut down the kernel.
79
+ */
80
+ shutdownKernel: SemanticCommand;
81
+ }
82
+ }
@@ -0,0 +1,374 @@
1
+ // Copyright (c) Jupyter Development Team.
2
+ // Distributed under the terms of the Modified BSD License.
3
+
4
+ import { TranslationBundle } from '@jupyterlab/translation';
5
+ import { IRankedMenu, MenuSvg, RankedMenu } from '@jupyterlab/ui-components';
6
+ import { ArrayExt } from '@lumino/algorithm';
7
+ import { CommandRegistry } from '@lumino/commands';
8
+ import { Menu, MenuBar } from '@lumino/widgets';
9
+ import { EditMenu } from './edit';
10
+ import { FileMenu } from './file';
11
+ import { HelpMenu } from './help';
12
+ import { KernelMenu } from './kernel';
13
+ import { RunMenu } from './run';
14
+ import { SettingsMenu } from './settings';
15
+ import { TabsMenu } from './tabs';
16
+ import { IMainMenu } from './tokens';
17
+ import { ViewMenu } from './view';
18
+
19
+ /**
20
+ * The main menu class. It is intended to be used as a singleton.
21
+ */
22
+ export class MainMenu extends MenuBar implements IMainMenu {
23
+ /**
24
+ * Construct the main menu bar.
25
+ */
26
+ constructor(commands: CommandRegistry) {
27
+ let options = { forceItemsPosition: { forceX: false, forceY: true } };
28
+ super(options);
29
+ this._commands = commands;
30
+ }
31
+
32
+ /**
33
+ * The application "Edit" menu.
34
+ */
35
+ get editMenu(): EditMenu {
36
+ if (!this._editMenu) {
37
+ this._editMenu = new EditMenu({
38
+ commands: this._commands,
39
+ rank: 2,
40
+ renderer: MenuSvg.defaultRenderer
41
+ });
42
+ }
43
+ return this._editMenu;
44
+ }
45
+
46
+ /**
47
+ * The application "File" menu.
48
+ */
49
+ get fileMenu(): FileMenu {
50
+ if (!this._fileMenu) {
51
+ this._fileMenu = new FileMenu({
52
+ commands: this._commands,
53
+ rank: 1,
54
+ renderer: MenuSvg.defaultRenderer
55
+ });
56
+ }
57
+ return this._fileMenu;
58
+ }
59
+
60
+ /**
61
+ * The application "Help" menu.
62
+ */
63
+ get helpMenu(): HelpMenu {
64
+ if (!this._helpMenu) {
65
+ this._helpMenu = new HelpMenu({
66
+ commands: this._commands,
67
+ rank: 1000,
68
+ renderer: MenuSvg.defaultRenderer
69
+ });
70
+ }
71
+ return this._helpMenu;
72
+ }
73
+
74
+ /**
75
+ * The application "Kernel" menu.
76
+ */
77
+ get kernelMenu(): KernelMenu {
78
+ if (!this._kernelMenu) {
79
+ this._kernelMenu = new KernelMenu({
80
+ commands: this._commands,
81
+ rank: 5,
82
+ renderer: MenuSvg.defaultRenderer
83
+ });
84
+ }
85
+ return this._kernelMenu;
86
+ }
87
+
88
+ /**
89
+ * The application "Run" menu.
90
+ */
91
+ get runMenu(): RunMenu {
92
+ if (!this._runMenu) {
93
+ this._runMenu = new RunMenu({
94
+ commands: this._commands,
95
+ rank: 4,
96
+ renderer: MenuSvg.defaultRenderer
97
+ });
98
+ }
99
+ return this._runMenu;
100
+ }
101
+
102
+ /**
103
+ * The application "Settings" menu.
104
+ */
105
+ get settingsMenu(): SettingsMenu {
106
+ if (!this._settingsMenu) {
107
+ this._settingsMenu = new SettingsMenu({
108
+ commands: this._commands,
109
+ rank: 999,
110
+ renderer: MenuSvg.defaultRenderer
111
+ });
112
+ }
113
+ return this._settingsMenu;
114
+ }
115
+
116
+ /**
117
+ * The application "View" menu.
118
+ */
119
+ get viewMenu(): ViewMenu {
120
+ if (!this._viewMenu) {
121
+ this._viewMenu = new ViewMenu({
122
+ commands: this._commands,
123
+ rank: 3,
124
+ renderer: MenuSvg.defaultRenderer
125
+ });
126
+ }
127
+ return this._viewMenu;
128
+ }
129
+
130
+ /**
131
+ * The application "Tabs" menu.
132
+ */
133
+ get tabsMenu(): TabsMenu {
134
+ if (!this._tabsMenu) {
135
+ this._tabsMenu = new TabsMenu({
136
+ commands: this._commands,
137
+ rank: 500,
138
+ renderer: MenuSvg.defaultRenderer
139
+ });
140
+ }
141
+ return this._tabsMenu;
142
+ }
143
+
144
+ /**
145
+ * Add a new menu to the main menu bar.
146
+ */
147
+ addMenu(
148
+ menu: Menu,
149
+ update: boolean = true,
150
+ options: IMainMenu.IAddOptions = {}
151
+ ): void {
152
+ if (ArrayExt.firstIndexOf(this.menus, menu) > -1) {
153
+ return;
154
+ }
155
+
156
+ // override default renderer with svg-supporting renderer
157
+ MenuSvg.overrideDefaultRenderer(menu);
158
+
159
+ const rank =
160
+ 'rank' in options
161
+ ? options.rank
162
+ : 'rank' in menu
163
+ ? (menu as any).rank
164
+ : IRankedMenu.DEFAULT_RANK;
165
+ const rankItem = { menu, rank };
166
+ const index = ArrayExt.upperBound(this._items, rankItem, Private.itemCmp);
167
+
168
+ // Upon disposal, remove the menu and its rank reference.
169
+ menu.disposed.connect(this._onMenuDisposed, this);
170
+
171
+ ArrayExt.insert(this._items, index, rankItem);
172
+ /**
173
+ * Create a new menu.
174
+ */
175
+ this.insertMenu(index, menu);
176
+
177
+ // Link the menu to the API - backward compatibility when switching to menu description in settings
178
+ switch (menu.id) {
179
+ case 'jp-mainmenu-file':
180
+ if (!this._fileMenu && menu instanceof FileMenu) {
181
+ this._fileMenu = menu;
182
+ }
183
+ break;
184
+ case 'jp-mainmenu-edit':
185
+ if (!this._editMenu && menu instanceof EditMenu) {
186
+ this._editMenu = menu;
187
+ }
188
+ break;
189
+ case 'jp-mainmenu-view':
190
+ if (!this._viewMenu && menu instanceof ViewMenu) {
191
+ this._viewMenu = menu;
192
+ }
193
+ break;
194
+ case 'jp-mainmenu-run':
195
+ if (!this._runMenu && menu instanceof RunMenu) {
196
+ this._runMenu = menu;
197
+ }
198
+ break;
199
+ case 'jp-mainmenu-kernel':
200
+ if (!this._kernelMenu && menu instanceof KernelMenu) {
201
+ this._kernelMenu = menu;
202
+ }
203
+ break;
204
+ case 'jp-mainmenu-tabs':
205
+ if (!this._tabsMenu && menu instanceof TabsMenu) {
206
+ this._tabsMenu = menu;
207
+ }
208
+ break;
209
+ case 'jp-mainmenu-settings':
210
+ if (!this._settingsMenu && menu instanceof SettingsMenu) {
211
+ this._settingsMenu = menu;
212
+ }
213
+ break;
214
+ case 'jp-mainmenu-help':
215
+ if (!this._helpMenu && menu instanceof HelpMenu) {
216
+ this._helpMenu = menu;
217
+ }
218
+ break;
219
+ }
220
+ }
221
+
222
+ /**
223
+ * Dispose of the resources held by the menu bar.
224
+ */
225
+ dispose(): void {
226
+ this._editMenu?.dispose();
227
+ this._fileMenu?.dispose();
228
+ this._helpMenu?.dispose();
229
+ this._kernelMenu?.dispose();
230
+ this._runMenu?.dispose();
231
+ this._settingsMenu?.dispose();
232
+ this._viewMenu?.dispose();
233
+ this._tabsMenu?.dispose();
234
+ super.dispose();
235
+ }
236
+
237
+ /**
238
+ * Generate the menu.
239
+ *
240
+ * @param commands The command registry
241
+ * @param options The main menu options.
242
+ * @param trans - The application language translator.
243
+ */
244
+ static generateMenu(
245
+ commands: CommandRegistry,
246
+ options: IMainMenu.IMenuOptions,
247
+ trans: TranslationBundle
248
+ ): RankedMenu {
249
+ let menu: RankedMenu;
250
+ const { id, label, rank } = options;
251
+ switch (id) {
252
+ case 'jp-mainmenu-file':
253
+ menu = new FileMenu({
254
+ commands,
255
+ rank,
256
+ renderer: MenuSvg.defaultRenderer
257
+ });
258
+ break;
259
+ case 'jp-mainmenu-edit':
260
+ menu = new EditMenu({
261
+ commands,
262
+ rank,
263
+ renderer: MenuSvg.defaultRenderer
264
+ });
265
+ break;
266
+ case 'jp-mainmenu-view':
267
+ menu = new ViewMenu({
268
+ commands,
269
+ rank,
270
+ renderer: MenuSvg.defaultRenderer
271
+ });
272
+ break;
273
+ case 'jp-mainmenu-run':
274
+ menu = new RunMenu({
275
+ commands,
276
+ rank,
277
+ renderer: MenuSvg.defaultRenderer
278
+ });
279
+ break;
280
+ case 'jp-mainmenu-kernel':
281
+ menu = new KernelMenu({
282
+ commands,
283
+ rank,
284
+ renderer: MenuSvg.defaultRenderer
285
+ });
286
+ break;
287
+ case 'jp-mainmenu-tabs':
288
+ menu = new TabsMenu({
289
+ commands,
290
+ rank,
291
+ renderer: MenuSvg.defaultRenderer
292
+ });
293
+ break;
294
+ case 'jp-mainmenu-settings':
295
+ menu = new SettingsMenu({
296
+ commands,
297
+ rank,
298
+ renderer: MenuSvg.defaultRenderer
299
+ });
300
+ break;
301
+ case 'jp-mainmenu-help':
302
+ menu = new HelpMenu({
303
+ commands,
304
+ rank,
305
+ renderer: MenuSvg.defaultRenderer
306
+ });
307
+ break;
308
+ default:
309
+ menu = new RankedMenu({
310
+ commands,
311
+ rank,
312
+ renderer: MenuSvg.defaultRenderer
313
+ });
314
+ }
315
+
316
+ if (label) {
317
+ menu.title.label = trans._p('menu', label);
318
+ }
319
+
320
+ return menu;
321
+ }
322
+
323
+ /**
324
+ * Handle the disposal of a menu.
325
+ */
326
+ private _onMenuDisposed(menu: Menu): void {
327
+ this.removeMenu(menu);
328
+ const index = ArrayExt.findFirstIndex(
329
+ this._items,
330
+ item => item.menu === menu
331
+ );
332
+ if (index !== -1) {
333
+ ArrayExt.removeAt(this._items, index);
334
+ }
335
+ }
336
+
337
+ private _commands: CommandRegistry;
338
+ private _items: Private.IRankItem[] = [];
339
+ private _editMenu: EditMenu;
340
+ private _fileMenu: FileMenu;
341
+ private _helpMenu: HelpMenu;
342
+ private _kernelMenu: KernelMenu;
343
+ private _runMenu: RunMenu;
344
+ private _settingsMenu: SettingsMenu;
345
+ private _viewMenu: ViewMenu;
346
+ private _tabsMenu: TabsMenu;
347
+ }
348
+
349
+ /**
350
+ * A namespace for private data.
351
+ */
352
+ namespace Private {
353
+ /**
354
+ * An object which holds a menu and its sort rank.
355
+ */
356
+ export interface IRankItem {
357
+ /**
358
+ * The menu for the item.
359
+ */
360
+ menu: Menu;
361
+
362
+ /**
363
+ * The sort rank of the menu.
364
+ */
365
+ rank: number;
366
+ }
367
+
368
+ /**
369
+ * A comparator function for menu rank items.
370
+ */
371
+ export function itemCmp(first: IRankItem, second: IRankItem): number {
372
+ return first.rank - second.rank;
373
+ }
374
+ }
package/src/run.ts ADDED
@@ -0,0 +1,61 @@
1
+ // Copyright (c) Jupyter Development Team.
2
+ // Distributed under the terms of the Modified BSD License.
3
+
4
+ import { IRankedMenu, RankedMenu } from '@jupyterlab/ui-components';
5
+ import { SemanticCommand } from '@jupyterlab/apputils';
6
+
7
+ /**
8
+ * An interface for a Run menu.
9
+ */
10
+ export interface IRunMenu extends IRankedMenu {
11
+ /**
12
+ * Semantic commands ICodeRunner for the Run menu.
13
+ */
14
+ readonly codeRunners: IRunMenu.ICodeRunner;
15
+ }
16
+
17
+ /**
18
+ * An extensible Run menu for the application.
19
+ */
20
+ export class RunMenu extends RankedMenu implements IRunMenu {
21
+ /**
22
+ * Construct the run menu.
23
+ */
24
+ constructor(options: IRankedMenu.IOptions) {
25
+ super(options);
26
+ this.codeRunners = {
27
+ restart: new SemanticCommand(),
28
+ run: new SemanticCommand(),
29
+ runAll: new SemanticCommand()
30
+ };
31
+ }
32
+
33
+ /**
34
+ * Semantic commands ICodeRunner for the Run menu.
35
+ */
36
+ readonly codeRunners: IRunMenu.ICodeRunner;
37
+ }
38
+
39
+ /**
40
+ * A namespace for RunMenu statics.
41
+ */
42
+ export namespace IRunMenu {
43
+ /**
44
+ * An object that runs code, which may be
45
+ * registered with the Run menu.
46
+ */
47
+ export interface ICodeRunner {
48
+ /**
49
+ * A semantic command to run a subpart of a document.
50
+ */
51
+ run: SemanticCommand;
52
+ /**
53
+ * A semantic command to run a whole document
54
+ */
55
+ runAll: SemanticCommand;
56
+ /**
57
+ * A semantic command to restart a kernel
58
+ */
59
+ restart: SemanticCommand;
60
+ }
61
+ }
@@ -0,0 +1,21 @@
1
+ // Copyright (c) Jupyter Development Team.
2
+ // Distributed under the terms of the Modified BSD License.
3
+
4
+ import { IRankedMenu, RankedMenu } from '@jupyterlab/ui-components';
5
+
6
+ /**
7
+ * An interface for a Settings menu.
8
+ */
9
+ export interface ISettingsMenu extends IRankedMenu {}
10
+
11
+ /**
12
+ * An extensible Settings menu for the application.
13
+ */
14
+ export class SettingsMenu extends RankedMenu implements ISettingsMenu {
15
+ /**
16
+ * Construct the settings menu.
17
+ */
18
+ constructor(options: IRankedMenu.IOptions) {
19
+ super(options);
20
+ }
21
+ }
package/src/tabs.ts ADDED
@@ -0,0 +1,21 @@
1
+ // Copyright (c) Jupyter Development Team.
2
+ // Distributed under the terms of the Modified BSD License.
3
+
4
+ import { IRankedMenu, RankedMenu } from '@jupyterlab/ui-components';
5
+
6
+ /**
7
+ * An interface for a Tabs menu.
8
+ */
9
+ export interface ITabsMenu extends IRankedMenu {}
10
+
11
+ /**
12
+ * An extensible Tabs menu for the application.
13
+ */
14
+ export class TabsMenu extends RankedMenu implements ITabsMenu {
15
+ /**
16
+ * Construct the tabs menu.
17
+ */
18
+ constructor(options: IRankedMenu.IOptions) {
19
+ super(options);
20
+ }
21
+ }
package/src/tokens.ts ADDED
@@ -0,0 +1,93 @@
1
+ // Copyright (c) Jupyter Development Team.
2
+ // Distributed under the terms of the Modified BSD License.
3
+
4
+ import { MenuFactory } from '@jupyterlab/apputils';
5
+ import { Token } from '@lumino/coreutils';
6
+ import { Menu } from '@lumino/widgets';
7
+ import { IEditMenu } from './edit';
8
+ import { IFileMenu } from './file';
9
+ import { IHelpMenu } from './help';
10
+ import { IKernelMenu } from './kernel';
11
+ import { IRunMenu } from './run';
12
+ import { ISettingsMenu } from './settings';
13
+ import { ITabsMenu } from './tabs';
14
+ import { IViewMenu } from './view';
15
+
16
+ /**
17
+ * The main menu token.
18
+ */
19
+ export const IMainMenu = new Token<IMainMenu>('@jupyterlab/mainmenu:IMainMenu');
20
+
21
+ /**
22
+ * The main menu interface.
23
+ */
24
+ export interface IMainMenu {
25
+ /**
26
+ * Add a new menu to the main menu bar.
27
+ *
28
+ * @param menu The menu to add
29
+ * @param update Whether to update the menu bar or not
30
+ * @param options Options for adding the menu
31
+ */
32
+ addMenu(menu: Menu, update?: boolean, options?: IMainMenu.IAddOptions): void;
33
+
34
+ /**
35
+ * The application "File" menu.
36
+ */
37
+ readonly fileMenu: IFileMenu;
38
+
39
+ /**
40
+ * The application "Edit" menu.
41
+ */
42
+ readonly editMenu: IEditMenu;
43
+
44
+ /**
45
+ * The application "View" menu.
46
+ */
47
+ readonly viewMenu: IViewMenu;
48
+
49
+ /**
50
+ * The application "Help" menu.
51
+ */
52
+ readonly helpMenu: IHelpMenu;
53
+
54
+ /**
55
+ * The application "Kernel" menu.
56
+ */
57
+ readonly kernelMenu: IKernelMenu;
58
+
59
+ /**
60
+ * The application "Run" menu.
61
+ */
62
+ readonly runMenu: IRunMenu;
63
+
64
+ /**
65
+ * The application "Settings" menu.
66
+ */
67
+ readonly settingsMenu: ISettingsMenu;
68
+
69
+ /**
70
+ * The application "Tabs" menu.
71
+ */
72
+ readonly tabsMenu: ITabsMenu;
73
+ }
74
+
75
+ /**
76
+ * The namespace for IMainMenu attached interfaces.
77
+ */
78
+ export namespace IMainMenu {
79
+ /**
80
+ * The options used to add a menu to the main menu.
81
+ */
82
+ export interface IAddOptions {
83
+ /**
84
+ * The rank order of the menu among its siblings.
85
+ */
86
+ rank?: number;
87
+ }
88
+
89
+ /**
90
+ * The instantiation options for an IMainMenu.
91
+ */
92
+ export interface IMenuOptions extends MenuFactory.IMenuOptions {}
93
+ }
package/src/view.ts ADDED
@@ -0,0 +1,63 @@
1
+ // Copyright (c) Jupyter Development Team.
2
+ // Distributed under the terms of the Modified BSD License.
3
+
4
+ import { IRankedMenu, RankedMenu } from '@jupyterlab/ui-components';
5
+ import { SemanticCommand } from '@jupyterlab/apputils';
6
+
7
+ /**
8
+ * An interface for a View menu.
9
+ */
10
+ export interface IViewMenu extends IRankedMenu {
11
+ /**
12
+ * Semantic commands IEditorViewer for the View menu.
13
+ */
14
+ readonly editorViewers: IViewMenu.IEditorViewer;
15
+ }
16
+
17
+ /**
18
+ * An extensible View menu for the application.
19
+ */
20
+ export class ViewMenu extends RankedMenu implements IViewMenu {
21
+ /**
22
+ * Construct the view menu.
23
+ */
24
+ constructor(options: IRankedMenu.IOptions) {
25
+ super(options);
26
+ this.editorViewers = {
27
+ toggleLineNumbers: new SemanticCommand(),
28
+ toggleMatchBrackets: new SemanticCommand(),
29
+ toggleWordWrap: new SemanticCommand()
30
+ };
31
+ }
32
+
33
+ /**
34
+ * Semantic commands IEditorViewer for the View menu.
35
+ */
36
+ readonly editorViewers: IViewMenu.IEditorViewer;
37
+ }
38
+
39
+ /**
40
+ * Namespace for IViewMenu.
41
+ */
42
+ export namespace IViewMenu {
43
+ /**
44
+ * Interface for a text editor viewer to register
45
+ * itself with the text editor semantic commands.
46
+ */
47
+ export interface IEditorViewer {
48
+ /**
49
+ * A semantic command to show line numbers in the editor.
50
+ */
51
+ toggleLineNumbers: SemanticCommand;
52
+
53
+ /**
54
+ * A semantic command to word-wrap the editor.
55
+ */
56
+ toggleWordWrap: SemanticCommand;
57
+
58
+ /**
59
+ * A semantic command to match brackets in the editor.
60
+ */
61
+ toggleMatchBrackets: SemanticCommand;
62
+ }
63
+ }