From 306d50aa678eb97a0ef86600a3d1e709bdc59bf2 Mon Sep 17 00:00:00 2001 From: Jeremy Tuloup Date: Sun, 14 Apr 2019 23:05:00 +0200 Subject: [PATCH 1/8] Add extensionmanager:toggle to the command palette --- .../extensionmanager-extension/src/index.ts | 42 +++++++++++-------- 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/packages/extensionmanager-extension/src/index.ts b/packages/extensionmanager-extension/src/index.ts index 9be9523b9459..319946905620 100644 --- a/packages/extensionmanager-extension/src/index.ts +++ b/packages/extensionmanager-extension/src/index.ts @@ -8,7 +8,7 @@ import { JupyterFrontEndPlugin } from '@jupyterlab/application'; -import { Dialog, showDialog } from '@jupyterlab/apputils'; +import { Dialog, showDialog, ICommandPalette } from '@jupyterlab/apputils'; import { ISettingRegistry } from '@jupyterlab/coreutils'; @@ -18,33 +18,35 @@ import { ExtensionView } from '@jupyterlab/extensionmanager'; * IDs of the commands added by this extension. */ namespace CommandIDs { - export const enable = 'extensionmanager:enable'; + export const toggle = 'extensionmanager:toggle'; export const hide = 'extensionmanager:hide-main'; export const show = 'extensionmanager:activate-main'; - - export const toggle = 'extensionmanager:toggle-main'; } +export const EXTENSION_MANAGER_PLUGIN_ID = + '@jupyterlab/extensionmanager-extension:plugin'; + /** * The extension manager plugin. */ const plugin: JupyterFrontEndPlugin = { - id: '@jupyterlab/extensionmanager-extension:plugin', + id: EXTENSION_MANAGER_PLUGIN_ID, autoStart: true, requires: [ISettingRegistry], - optional: [ILabShell, ILayoutRestorer], + optional: [ILabShell, ILayoutRestorer, ICommandPalette], activate: async ( app: JupyterFrontEnd, registry: ISettingRegistry, labShell: ILabShell | null, - restorer: ILayoutRestorer | null + restorer: ILayoutRestorer | null, + palette: ICommandPalette | null ) => { const settings = await registry.load(plugin.id); let enabled = settings.composite['enabled'] === true; - const { serviceManager, shell } = app; + const { commands, serviceManager, shell } = app; let view: ExtensionView | undefined; const createView = () => { @@ -82,6 +84,20 @@ const plugin: JupyterFrontEndPlugin = { }); }); + commands.addCommand(CommandIDs.toggle, { + label: 'Toggle Extension Manager', + execute: () => { + if (registry) { + registry.set(EXTENSION_MANAGER_PLUGIN_ID, 'enabled', !enabled); + } + } + }); + + const category: string = 'Extension Manager'; + if (palette) { + palette.addItem({ command: CommandIDs.toggle, category }); + } + addCommands(app, view, labShell); } }; @@ -111,16 +127,6 @@ function addCommands( } }); - commands.addCommand(CommandIDs.toggle, { - execute: () => { - if (view.isHidden) { - return commands.execute(CommandIDs.show, undefined); - } else { - return commands.execute(CommandIDs.hide, undefined); - } - } - }); - // TODO: Also add to command palette. } From 785b6ea7bf8306d70077854d33779295b0ebffdd Mon Sep 17 00:00:00 2001 From: Jeremy Tuloup Date: Sun, 14 Apr 2019 23:13:57 +0200 Subject: [PATCH 2/8] Add extensionmanager:toggle to the main menu --- .../extensionmanager-extension/src/index.ts | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/packages/extensionmanager-extension/src/index.ts b/packages/extensionmanager-extension/src/index.ts index 319946905620..3b349df9104c 100644 --- a/packages/extensionmanager-extension/src/index.ts +++ b/packages/extensionmanager-extension/src/index.ts @@ -12,6 +12,8 @@ import { Dialog, showDialog, ICommandPalette } from '@jupyterlab/apputils'; import { ISettingRegistry } from '@jupyterlab/coreutils'; +import { IMainMenu } from '@jupyterlab/mainmenu'; + import { ExtensionView } from '@jupyterlab/extensionmanager'; /** @@ -35,12 +37,13 @@ const plugin: JupyterFrontEndPlugin = { id: EXTENSION_MANAGER_PLUGIN_ID, autoStart: true, requires: [ISettingRegistry], - optional: [ILabShell, ILayoutRestorer, ICommandPalette], + optional: [ILabShell, ILayoutRestorer, IMainMenu, ICommandPalette], activate: async ( app: JupyterFrontEnd, registry: ISettingRegistry, labShell: ILabShell | null, restorer: ILayoutRestorer | null, + mainMenu: IMainMenu | null, palette: ICommandPalette | null ) => { const settings = await registry.load(plugin.id); @@ -90,12 +93,18 @@ const plugin: JupyterFrontEndPlugin = { if (registry) { registry.set(EXTENSION_MANAGER_PLUGIN_ID, 'enabled', !enabled); } - } + }, + isToggled: () => enabled }); - const category: string = 'Extension Manager'; + const category = 'Extension Manager'; + const command = CommandIDs.toggle; if (palette) { - palette.addItem({ command: CommandIDs.toggle, category }); + palette.addItem({ command, category }); + } + + if (mainMenu) { + mainMenu.settingsMenu.addGroup([{ command }], 100); } addCommands(app, view, labShell); From 1e64edb88d1d4375459b4434439ab74b750f64a2 Mon Sep 17 00:00:00 2001 From: Jeremy Tuloup Date: Sun, 14 Apr 2019 23:15:57 +0200 Subject: [PATCH 3/8] Rename Toggle to Enable for the ext manager cmd --- packages/extensionmanager-extension/src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/extensionmanager-extension/src/index.ts b/packages/extensionmanager-extension/src/index.ts index 3b349df9104c..9e14e80a87c8 100644 --- a/packages/extensionmanager-extension/src/index.ts +++ b/packages/extensionmanager-extension/src/index.ts @@ -88,7 +88,7 @@ const plugin: JupyterFrontEndPlugin = { }); commands.addCommand(CommandIDs.toggle, { - label: 'Toggle Extension Manager', + label: 'Enable Extension Manager', execute: () => { if (registry) { registry.set(EXTENSION_MANAGER_PLUGIN_ID, 'enabled', !enabled); From c82da05bfd602de5ae9fde76b773a86d436200ff Mon Sep 17 00:00:00 2001 From: Jeremy Tuloup Date: Sun, 14 Apr 2019 23:29:52 +0200 Subject: [PATCH 4/8] Add mainmenu to ext manager dependencies --- packages/extensionmanager-extension/package.json | 3 ++- packages/extensionmanager-extension/tsconfig.json | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/extensionmanager-extension/package.json b/packages/extensionmanager-extension/package.json index 52441d81b0a2..454b0bef6432 100644 --- a/packages/extensionmanager-extension/package.json +++ b/packages/extensionmanager-extension/package.json @@ -35,7 +35,8 @@ "@jupyterlab/application": "^1.0.0-alpha.6", "@jupyterlab/apputils": "^1.0.0-alpha.6", "@jupyterlab/coreutils": "^3.0.0-alpha.6", - "@jupyterlab/extensionmanager": "^1.0.0-alpha.6" + "@jupyterlab/extensionmanager": "^1.0.0-alpha.6", + "@jupyterlab/mainmenu": "^1.0.0-alpha.6" }, "devDependencies": { "rimraf": "~2.6.2", diff --git a/packages/extensionmanager-extension/tsconfig.json b/packages/extensionmanager-extension/tsconfig.json index fa04c89ca9f3..0960e8d31f07 100644 --- a/packages/extensionmanager-extension/tsconfig.json +++ b/packages/extensionmanager-extension/tsconfig.json @@ -17,6 +17,9 @@ }, { "path": "../extensionmanager" + }, + { + "path": "../mainmenu" } ] } From b81bcd86ebebbabdb8685334556c4bb1607f65ff Mon Sep 17 00:00:00 2001 From: Jeremy Tuloup Date: Sun, 14 Apr 2019 23:56:33 +0200 Subject: [PATCH 5/8] Remove unnecessary var, use plugin.id instead --- packages/extensionmanager-extension/src/index.ts | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/packages/extensionmanager-extension/src/index.ts b/packages/extensionmanager-extension/src/index.ts index 9e14e80a87c8..4e3b82006f65 100644 --- a/packages/extensionmanager-extension/src/index.ts +++ b/packages/extensionmanager-extension/src/index.ts @@ -27,14 +27,11 @@ namespace CommandIDs { export const show = 'extensionmanager:activate-main'; } -export const EXTENSION_MANAGER_PLUGIN_ID = - '@jupyterlab/extensionmanager-extension:plugin'; - /** * The extension manager plugin. */ const plugin: JupyterFrontEndPlugin = { - id: EXTENSION_MANAGER_PLUGIN_ID, + id: '@jupyterlab/extensionmanager-extension:plugin', autoStart: true, requires: [ISettingRegistry], optional: [ILabShell, ILayoutRestorer, IMainMenu, ICommandPalette], @@ -91,7 +88,7 @@ const plugin: JupyterFrontEndPlugin = { label: 'Enable Extension Manager', execute: () => { if (registry) { - registry.set(EXTENSION_MANAGER_PLUGIN_ID, 'enabled', !enabled); + registry.set(plugin.id, 'enabled', !enabled); } }, isToggled: () => enabled From 5031e87eac73d1d0616397808f87a007d57e423f Mon Sep 17 00:00:00 2001 From: Jeremy Tuloup Date: Tue, 16 Apr 2019 18:05:15 +0200 Subject: [PATCH 6/8] Remove unused hide and show commands --- .../extensionmanager-extension/src/index.ts | 34 ------------------- 1 file changed, 34 deletions(-) diff --git a/packages/extensionmanager-extension/src/index.ts b/packages/extensionmanager-extension/src/index.ts index 4e3b82006f65..243e97c3af81 100644 --- a/packages/extensionmanager-extension/src/index.ts +++ b/packages/extensionmanager-extension/src/index.ts @@ -21,10 +21,6 @@ import { ExtensionView } from '@jupyterlab/extensionmanager'; */ namespace CommandIDs { export const toggle = 'extensionmanager:toggle'; - - export const hide = 'extensionmanager:hide-main'; - - export const show = 'extensionmanager:activate-main'; } /** @@ -103,39 +99,9 @@ const plugin: JupyterFrontEndPlugin = { if (mainMenu) { mainMenu.settingsMenu.addGroup([{ command }], 100); } - - addCommands(app, view, labShell); } }; -/** - * Add the main file view commands to the application's command registry. - */ -function addCommands( - app: JupyterFrontEnd, - view: ExtensionView, - labShell: ILabShell | null -): void { - const { commands, shell } = app; - - commands.addCommand(CommandIDs.show, { - label: 'Show Extension Manager', - execute: () => { - shell.activateById(view.id); - } - }); - - commands.addCommand(CommandIDs.hide, { - execute: () => { - if (labShell && !view.isHidden) { - labShell.collapseLeft(); - } - } - }); - - // TODO: Also add to command palette. -} - /** * Export the plugin as the default. */ From 0b1a40d8266f2cfcd976c8eaa557763a06ae6751 Mon Sep 17 00:00:00 2001 From: Jeremy Tuloup Date: Mon, 13 May 2019 21:18:54 +0200 Subject: [PATCH 7/8] Enable ext manager cmd if builder is available --- packages/extensionmanager-extension/src/index.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/extensionmanager-extension/src/index.ts b/packages/extensionmanager-extension/src/index.ts index 243e97c3af81..6873bfb659fe 100644 --- a/packages/extensionmanager-extension/src/index.ts +++ b/packages/extensionmanager-extension/src/index.ts @@ -87,7 +87,8 @@ const plugin: JupyterFrontEndPlugin = { registry.set(plugin.id, 'enabled', !enabled); } }, - isToggled: () => enabled + isToggled: () => enabled, + isEnabled: () => serviceManager.builder.isAvailable }); const category = 'Extension Manager'; From edce0255597137cd499dba4f01805984d53b4597 Mon Sep 17 00:00:00 2001 From: Jeremy Tuloup Date: Mon, 13 May 2019 22:52:32 +0200 Subject: [PATCH 8/8] Add (experimental) to the ext manager cmd --- packages/extensionmanager-extension/src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/extensionmanager-extension/src/index.ts b/packages/extensionmanager-extension/src/index.ts index 6873bfb659fe..54de37a79d68 100644 --- a/packages/extensionmanager-extension/src/index.ts +++ b/packages/extensionmanager-extension/src/index.ts @@ -81,7 +81,7 @@ const plugin: JupyterFrontEndPlugin = { }); commands.addCommand(CommandIDs.toggle, { - label: 'Enable Extension Manager', + label: 'Enable Extension Manager (experimental)', execute: () => { if (registry) { registry.set(plugin.id, 'enabled', !enabled);