Преглед изворни кода

Merge pull request #33 from blink1073/update-commands

Update phosphide and cleanup
A. Darian пре 9 година
родитељ
комит
b16c2669a2

+ 1 - 5
examples/lab/src/plugin.ts

@@ -14,10 +14,6 @@ import {
   CodeMirrorWidget
 } from 'phosphor-codemirror';
 
-import {
-  ICommand, DelegateCommand
-} from 'phosphor-command';
-
 import {
   Container, Token
 } from 'phosphor-di';
@@ -43,7 +39,7 @@ export
 function resolve(container: Container): Promise<void> {
   return container.resolve({
     requires: [IAppShell, ICommandPalette, IFileBrowserWidget],
-    create: (shell, palette, browser) => {
+    create: (shell: IAppShell, palette: ICommandPalette, browser: IFileBrowserWidget) => {
       palette.title.text = 'Commands';
       shell.addToLeftArea(palette, { rank: 40 });
       shell.attach(document.body);

+ 15 - 16
package.json

@@ -1,19 +1,18 @@
 {
   "name": "jupyter-js-plugins",
-  "version": "0.2.0",
+  "version": "0.2.1",
   "description": "Plugins for JupyterLab",
   "main": "lib/index.js",
   "typings": "lib/index.d.ts",
   "dependencies": {
     "codemirror": "^5.10.0",
-    "jupyter-js-filebrowser": "^0.4.1",
-    "jupyter-js-notebook": "^0.3.0",
-    "jupyter-js-services": "^0.3.3",
+    "jupyter-js-filebrowser": "^0.4.3",
+    "jupyter-js-notebook": "^0.3.2",
+    "jupyter-js-services": "^0.4.1",
     "jupyter-js-terminal": "^0.1.12",
-    "jupyter-js-utils": "^0.2.6",
-    "phosphide": "^0.1.0",
+    "jupyter-js-utils": "^0.2.7",
+    "phosphide": "^0.2.0",
     "phosphor-codemirror": "^0.0.1",
-    "phosphor-command": "^0.5.0",
     "phosphor-di": "^0.9.0",
     "phosphor-properties": "^2.0.0",
     "phosphor-tabs": "^1.0.0-rc.2"
@@ -21,22 +20,22 @@
   "devDependencies": {
     "css-loader": "^0.23.1",
     "expect.js": "^0.3.1",
-    "fs-extra": "^0.26.3",
+    "fs-extra": "^0.26.4",
     "istanbul-instrumenter-loader": "^0.1.3",
     "json-loader": "^0.5.4",
-    "karma": "^0.13.9",
-    "karma-chrome-launcher": "^0.2.0",
+    "karma": "^0.13.19",
+    "karma-chrome-launcher": "^0.2.2",
     "karma-coverage": "^0.5.3",
-    "karma-firefox-launcher": "^0.1.6",
+    "karma-firefox-launcher": "^0.1.7",
     "karma-ie-launcher": "^0.2.0",
-    "karma-mocha": "^0.2.0",
-    "karma-mocha-reporter": "^1.1.1",
-    "mocha": "^2.2.5",
-    "rimraf": "^2.4.2",
+    "karma-mocha": "^0.2.1",
+    "karma-mocha-reporter": "^1.1.5",
+    "mocha": "^2.3.4",
+    "rimraf": "^2.5.0",
     "style-loader": "^0.13.0",
     "typedoc": "^0.3.12",
     "typescript": "^1.7.5",
-    "webpack": "^1.12.9"
+    "webpack": "^1.12.11"
   },
   "scripts": {
     "clean": "rimraf docs && rimraf lib && rimraf test/build",

+ 1 - 1
src/filebrowser/plugin.ts

@@ -33,7 +33,7 @@ export
 function register(container: Container): void {
   container.register(IFileBrowserWidget, {
     requires: [IServicesProvider],
-    create: (provider) => {
+    create: (provider: IServicesProvider) => {
       let contents = provider.contentsManager;
       let sessions = provider.notebookSessionManager;
       let model = new FileBrowserModel(contents, sessions);

+ 1 - 1
src/filehandler/plugin.ts

@@ -31,7 +31,7 @@ export
 function resolve(container: Container): Promise<IFileHandler> {
   return container.resolve({
     requires: [IServicesProvider, IFileOpener],
-    create: (services, opener) => {
+    create: (services: IServicesProvider, opener: IFileOpener) => {
       let handler = new FileHandler(services.contentsManager);
       opener.registerDefault(handler);
       return handler;

+ 23 - 42
src/fileopener/plugin.ts

@@ -6,18 +6,10 @@ import {
   FileBrowserWidget, FileHandler
 } from 'jupyter-js-filebrowser';
 
-import {
-  IContentsModel
-} from 'jupyter-js-services';
-
 import {
   IAppShell, ICommandPalette, ICommandRegistry
 } from 'phosphide';
 
-import {
-  DelegateCommand
-} from 'phosphor-command';
-
 import {
   Container, Token
 } from 'phosphor-di';
@@ -50,32 +42,24 @@ export
 function resolve(container: Container): Promise<void> {
   return container.resolve({
     requires: [IAppShell, IFileOpener, IFileBrowserWidget, ICommandPalette, ICommandRegistry],
-    create: (appShell, opener, browser, palette, registry) => {
-      let newFileCommandItem = {
-        id: 'jupyter-plugins:new-text-file',
-        command: new DelegateCommand(() => {
-           browser.newUntitled('file', '.txt').then((contents: IContentsModel) => {
-              opener.open(contents.path);
-              browser.refresh();
-            });
-          })
-      }
-      let newNotebookCommandItem = {
-        id: 'jupyter-plugins:new-notebook',
-        command: new DelegateCommand(() => {
-          browser.newUntitled('notebook').then((contents: IContentsModel) => {
-            opener.open(contents.path);
-            browser.refresh();
-          });
-        })
-      }
-      registry.add([newFileCommandItem, newNotebookCommandItem]);
+    create: (appShell: IAppShell, opener: IFileOpener, browser: IFileBrowserWidget, palette: ICommandPalette, registry: ICommandRegistry): void => {
+      registry.add('jupyter-plugins:new:text-file', () => {
+        browser.newUntitled('file', '.txt').then(
+          contents => opener.open(contents.path)
+        );
+      });
+
+      registry.add('jupyter-plugins:new:notebook', () => {
+        browser.newUntitled('notebook').then(
+          contents => opener.open(contents.path)
+        );
+      });
       let paletteItems = [{
-        id: 'jupyter-plugins:new-text-file',
+        id: 'jupyter-plugins:new:text-file',
         title: 'Text File',
         caption: ''
       }, {
-        id: 'jupyter-plugins:new-notebook',
+        id: 'jupyter-plugins:new:notebook',
         title: 'Notebook',
         caption: ''
       }];
@@ -99,14 +83,13 @@ export
 function register(container: Container): void {
   container.register(IFileOpener, {
     requires: [IAppShell, IFileBrowserWidget],
-    create: (shell, browser) => {
-      return new FileOpener(shell, browser);
+    create: (appShell, browserProvider): IFileOpener => {
+      return new FileOpener(appShell, browserProvider);
     }
   });
 }
 
 
-
 /**
  * An implementation on an IFileOpener.
  */
@@ -187,15 +170,13 @@ class FileOpener implements IFileOpener {
     if (!widget.isAttached) {
       this._appShell.addToMainArea(widget);
     }
-    let parent = widget.parent;
-    while (parent) {
-      if (parent instanceof TabPanel) {
-        if ((parent as TabPanel).childIndex(widget) !== -1) {
-          (parent as TabPanel).currentWidget = widget;
-          return widget;
-        }
-      }
-      parent = parent.parent;
+    let stack = widget.parent;
+    if (!stack) {
+      return;
+    }
+    let tabs = stack.parent;
+    if (tabs instanceof TabPanel) {
+      tabs.currentWidget = widget;
     }
     return widget;
   }

+ 1 - 1
src/imagehandler/plugin.ts

@@ -35,7 +35,7 @@ export
 function resolve(container: Container): Promise<IFileHandler> {
   return container.resolve({
     requires: [IServicesProvider, IFileOpener],
-    create: (services, opener) => {
+    create: (services: IServicesProvider, opener: IFileOpener) => {
       let handler = new ImageHandler(services.contentsManager);
       opener.register(handler);
       return handler;

+ 1 - 1
src/services/plugin.ts

@@ -32,7 +32,7 @@ export
 function register(container: Container): void {
   container.register(IServicesProvider, {
     requires: [],
-    create: () => { return new ServicesProvider() }
+    create: () => { return new ServicesProvider(); }
   });
 }
 

+ 21 - 18
src/terminal/plugin.ts

@@ -7,16 +7,16 @@ import {
 } from 'jupyter-js-terminal';
 
 import {
-  DelegateCommand
-} from 'phosphor-command';
+  IAppShell, ICommandPalette, ICommandRegistry
+} from 'phosphide';
 
 import {
   Container, Token
 } from 'phosphor-di';
 
 import {
-  IAppShell, ICommandPalette, ICommandRegistry
-} from 'phosphide';
+  TabPanel
+} from 'phosphor-tabs';
 
 import './plugin.css';
 
@@ -25,21 +25,24 @@ export
 function resolve(container: Container): Promise<void> {
   return container.resolve({
     requires: [IAppShell, ICommandPalette, ICommandRegistry],
-    create: (shell, palette, registry) => {
-      let termCommandItem = {
-        // Move this to the terminal.
-        id: 'jupyter-plugins:new-terminal',
-        command: new DelegateCommand(() => {
-          let term = new TerminalWidget();
-          term.color = 'black';
-          term.background = 'white';
-          term.title.closable = true;
-          shell.addToMainArea(term);
-        })
-      }
-      registry.add([termCommandItem]);
+    create: (shell: IAppShell, palette: ICommandPalette, registry: ICommandRegistry) => {
+      registry.add('jupyter-plugins:new:terminal', () => {
+        let term = new TerminalWidget();
+        term.color = 'black';
+        term.background = 'white';
+        term.title.closable = true;
+        shell.addToMainArea(term);
+        let stack = term.parent;
+        if (!stack) {
+          return;
+        }
+        let tabs = stack.parent;
+        if (tabs instanceof TabPanel) {
+          tabs.currentWidget = term;
+        }
+      });
       let paletteItem = {
-        id: 'jupyter-plugins:new-terminal',
+        id: 'jupyter-plugins:new:terminal',
         title: 'Terminal',
         caption: ''
       };