本文整理匯總了TypeScript中@jupyterlab/docregistry.IDocumentRegistry類的典型用法代碼示例。如果您正苦於以下問題:TypeScript IDocumentRegistry類的具體用法?TypeScript IDocumentRegistry怎麽用?TypeScript IDocumentRegistry使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。
在下文中一共展示了IDocumentRegistry類的10個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的TypeScript代碼示例。
示例1: activate
/**
* Activate the table widget extension.
*/
function activate(app: JupyterLab, registry: IDocumentRegistry, restorer: ILayoutRestorer): void {
const factory = new CSVViewerFactory({
name: FACTORY,
fileExtensions: ['.csv'],
defaultFor: ['.csv']
});
const tracker = new InstanceTracker<CSVViewer>({
namespace: 'csvviewer',
shell: app.shell
});
// Handle state restoration.
restorer.restore(tracker, {
command: 'file-operations:open',
args: widget => ({ path: widget.context.path, factory: FACTORY }),
name: widget => widget.context.path
});
registry.addWidgetFactory(factory);
factory.widgetCreated.connect((sender, widget) => {
// Track the widget.
tracker.add(widget);
// Notify the instance tracker if restore data needs to update.
widget.context.pathChanged.connect(() => { tracker.save(widget); });
});
}
示例2: activate
/**
* Activate the markdown plugin.
*/
function activate(app: JupyterLab, registry: IDocumentRegistry, rendermime: IRenderMime, restorer: ILayoutRestorer) {
const factory = new MarkdownWidgetFactory({
name: FACTORY,
fileExtensions: ['.md'],
rendermime
});
const shell = app.shell;
const namespace = 'rendered-markdown';
const tracker = new InstanceTracker<MarkdownWidget>({ namespace, shell });
// Handle state restoration.
restorer.restore(tracker, {
command: 'file-operations:open',
args: widget => ({ path: widget.context.path, factory: FACTORY }),
name: widget => widget.context.path
});
factory.widgetCreated.connect((sender, widget) => {
widget.title.icon = TEXTEDITOR_ICON_CLASS;
// Notify the instance tracker if restore data needs to update.
widget.context.pathChanged.connect(() => { tracker.save(widget); });
tracker.add(widget);
});
registry.addWidgetFactory(factory);
}
示例3: activate
/**
* Activate the image widget extension.
*/
function activate(app: JupyterLab, registry: IDocumentRegistry, palette: ICommandPalette, restorer: ILayoutRestorer): IImageTracker {
const namespace = 'image-widget';
const factory = new ImageWidgetFactory({
name: FACTORY,
modelName: 'base64',
fileExtensions: EXTENSIONS,
defaultFor: EXTENSIONS
});
const { shell } = app;
const tracker = new InstanceTracker<ImageWidget>({ namespace, shell });
// Handle state restoration.
restorer.restore(tracker, {
command: 'file-operations:open',
args: widget => ({ path: widget.context.path, factory: FACTORY }),
name: widget => widget.context.path
});
registry.addWidgetFactory(factory);
factory.widgetCreated.connect((sender, widget) => {
// Notify the instance tracker if restore data needs to update.
widget.context.pathChanged.connect(() => { tracker.save(widget); });
tracker.add(widget);
});
let category = 'Image Widget';
[CommandIDs.zoomIn, CommandIDs.zoomOut, CommandIDs.resetZoom]
.forEach(command => { palette.addItem({ command, category }); });
return tracker;
}
示例4: createContextMenu
/**
* Create a context menu for the file browser listing.
*
* #### Notes
* This function generates temporary commands with an incremented name. These
* commands are disposed when the menu itself is disposed.
*/
function createContextMenu(path: string, commands: CommandRegistry, registry: IDocumentRegistry): Menu {
const menu = new Menu({ commands });
menu.addItem({ command: CommandIDs.open });
const ext = DocumentRegistry.extname(path);
const factories = registry.preferredWidgetFactories(ext).map(f => f.name);
if (path && factories.length > 1) {
const command = 'file-operations:open';
const openWith = new Menu({ commands });
openWith.title.label = 'Open With...';
factories.forEach(factory => {
openWith.addItem({ args: { factory, path }, command });
});
menu.addItem({ type: 'submenu', submenu: openWith });
}
menu.addItem({ command: CommandIDs.rename });
menu.addItem({ command: CommandIDs.del });
menu.addItem({ command: CommandIDs.duplicate });
menu.addItem({ command: CommandIDs.cut });
menu.addItem({ command: CommandIDs.copy });
menu.addItem({ command: CommandIDs.paste });
menu.addItem({ command: CommandIDs.download });
menu.addItem({ command: CommandIDs.shutdown });
return menu;
}
示例5: populateCreators
/**
* Populate the command palette and the file menu with the registered creators.
*/
function populateCreators(app: JupyterLab, docManager: IDocumentManager, registry: IDocumentRegistry, palette: ICommandPalette, menu: Menu): void {
const category = 'File Operations';
// Clear any previously added creator palette items.
if (Private.creators) {
Private.creators.dispose();
}
Private.creators = new DisposableSet();
// Add the "create from" commands.
each(registry.creators(), creator => {
const command = CommandIDs.createFrom;
const creatorName = creator.name;
const label = `New ${creatorName}`;
const args = { creatorName, label };
menu.insertItem(0, { args, command });
Private.creators.add(palette.addItem({ args, category, command }));
});
}
示例6: activate
/**
* Activate the editor tracker plugin.
*/
function activate(app: JupyterLab, registry: IDocumentRegistry, restorer: ILayoutRestorer, editorServices: IEditorServices, launcher: ILauncher | null): IEditorTracker {
const factory = new EditorWidgetFactory({
editorServices,
factoryOptions: {
name: FACTORY,
fileExtensions: ['*'],
defaultFor: ['*']
}
});
const shell = app.shell;
const tracker = new InstanceTracker<EditorWidget>({
namespace: 'editor',
shell
});
// Handle state restoration.
restorer.restore(tracker, {
command: 'file-operations:open',
args: widget => ({ path: widget.context.path, factory: FACTORY }),
name: widget => widget.context.path
});
factory.widgetCreated.connect((sender, widget) => {
widget.title.icon = EDITOR_ICON_CLASS;
// Notify the instance tracker if restore data needs to update.
widget.context.pathChanged.connect(() => { tracker.save(widget); });
tracker.add(widget);
});
registry.addWidgetFactory(factory);
addDefaultCommands(tracker, app.commands);
// Add a launcher item if the launcher is available.
if (launcher) {
launcher.add({
name: 'Text Editor',
command: 'filebrowser:new-text-file'
});
}
return tracker;
}
示例7: activate
/**
* Activate the editor tracker plugin.
*/
function activate(app: JupyterLab, registry: IDocumentRegistry, restorer: ILayoutRestorer, editorServices: IEditorServices, state: IStateDB, launcher: ILauncher | null): IEditorTracker {
const factory = new FileEditorFactory({
editorServices,
factoryOptions: {
name: FACTORY,
fileExtensions: ['*'],
defaultFor: ['*']
}
});
const { commands, shell } = app;
const id = 'editor:settings';
const tracker = new InstanceTracker<FileEditor>({
namespace: 'editor',
shell
});
let lineNumbers = true;
let wordWrap = true;
// Handle state restoration.
restorer.restore(tracker, {
command: 'file-operations:open',
args: widget => ({ path: widget.context.path, factory: FACTORY }),
name: widget => widget.context.path
});
// Fetch the initial state of the settings.
state.fetch(id).then(settings => {
if (!settings) {
return;
}
if (typeof settings['wordWrap'] === 'string') {
commands.execute(CommandIDs.wordWrap, settings);
}
if (typeof settings['lineNumbers'] === 'string') {
commands.execute(CommandIDs.lineNumbers, settings);
}
});
/**
* Save the editor widget settings state.
*/
function saveState(): Promise<void> {
return state.save(id, { lineNumbers, wordWrap });
}
factory.widgetCreated.connect((sender, widget) => {
widget.title.icon = EDITOR_ICON_CLASS;
// Notify the instance tracker if restore data needs to update.
widget.context.pathChanged.connect(() => { tracker.save(widget); });
tracker.add(widget);
widget.editor.lineNumbers = lineNumbers;
widget.editor.wordWrap = wordWrap;
});
registry.addWidgetFactory(factory);
/**
* Handle the settings of new widgets.
*/
tracker.widgetAdded.connect((sender, widget) => {
let editor = widget.editor;
editor.lineNumbers = lineNumbers;
editor.wordWrap = wordWrap;
});
/**
* Toggle editor line numbers
*/
function toggleLineNums(args: JSONObject): Promise<void> {
lineNumbers = !lineNumbers;
tracker.forEach(widget => {
widget.editor.lineNumbers = lineNumbers;
});
return saveState();
}
/**
* Toggle editor line wrap
*/
function toggleLineWrap(args: JSONObject): Promise<void> {
wordWrap = !wordWrap;
tracker.forEach(widget => {
widget.editor.wordWrap = wordWrap;
});
return saveState();
}
/**
* A test for whether the tracker has an active widget.
*/
function hasWidget(): boolean {
return tracker.currentWidget !== null;
}
commands.addCommand(CommandIDs.lineNumbers, {
execute: toggleLineNums,
isEnabled: hasWidget,
//.........這裏部分代碼省略.........
示例8: activateNotebookHandler
/**
* Activate the notebook handler extension.
*/
function activateNotebookHandler(app: JupyterLab, registry: IDocumentRegistry, services: IServiceManager, rendermime: IRenderMime, mainMenu: IMainMenu, palette: ICommandPalette, contentFactory: NotebookPanel.IContentFactory, editorServices: IEditorServices, restorer: ILayoutRestorer, launcher: ILauncher | null): INotebookTracker {
const factory = new NotebookWidgetFactory({
name: FACTORY,
fileExtensions: ['.ipynb'],
modelName: 'notebook',
defaultFor: ['.ipynb'],
preferKernel: true,
canStartKernel: true,
rendermime,
contentFactory,
mimeTypeService: editorServices.mimeTypeService
});
const shell = app.shell;
const tracker = new NotebookTracker({ namespace: 'notebook', shell });
// Handle state restoration.
restorer.restore(tracker, {
command: 'file-operations:open',
args: panel => ({ path: panel.context.path, factory: FACTORY }),
name: panel => panel.context.path,
when: services.ready
});
registry.addModelFactory(new NotebookModelFactory({}));
registry.addWidgetFactory(factory);
registry.addFileType({
name: 'Notebook',
extension: '.ipynb',
contentType: 'notebook',
fileFormat: 'json'
});
registry.addCreator({
name: 'Notebook',
fileType: 'Notebook',
widgetName: 'Notebook'
});
addCommands(app, services, tracker);
populatePalette(palette);
let id = 0; // The ID counter for notebook panels.
factory.widgetCreated.connect((sender, widget) => {
// If the notebook panel does not have an ID, assign it one.
widget.id = widget.id || `notebook-${++id}`;
widget.title.icon = NOTEBOOK_ICON_CLASS;
// Notify the instance tracker if restore data needs to update.
widget.context.pathChanged.connect(() => { tracker.save(widget); });
// Add the notebook panel to the tracker.
tracker.add(widget);
});
// Add main menu notebook menu.
mainMenu.addMenu(createMenu(app), { rank: 20 });
// Add a launcher item if the launcher is available.
if (launcher) {
launcher.add({
args: { creatorName: 'Notebook' },
command: 'file-operations:create-from',
name: 'Notebook'
});
}
app.contextMenu.addItem({command: CommandIDs.clearOutputs, selector: '.jp-Notebook .jp-Cell'});
app.contextMenu.addItem({command: CommandIDs.split, selector: '.jp-Notebook .jp-Cell'});
app.contextMenu.addItem({ type: 'separator', selector: '.jp-Notebook', rank: 0 });
app.contextMenu.addItem({command: CommandIDs.undo, selector: '.jp-Notebook', rank: 1});
app.contextMenu.addItem({command: CommandIDs.redo, selector: '.jp-Notebook', rank: 2});
app.contextMenu.addItem({ type: 'separator', selector: '.jp-Notebook', rank: 0 });
app.contextMenu.addItem({command: CommandIDs.createConsole, selector: '.jp-Notebook', rank: 3});
return tracker;
}
示例9: activateFileBrowser
/**
* Activate the file browser in the sidebar.
*/
function activateFileBrowser(app: JupyterLab, factory: IFileBrowserFactory, manager: IServiceManager, documentManager: IDocumentManager, registry: IDocumentRegistry, mainMenu: IMainMenu, palette: ICommandPalette, restorer: ILayoutRestorer): void {
const { commands } = app;
const category = 'File Operations';
const fbWidget = factory.createFileBrowser('filebrowser', {
commands: commands,
documentManager: documentManager,
serviceManager: manager
});
// Let the application restorer track the primary file browser (that is
// automatically created) for restoration of application state (e.g. setting
// the file browser as the current side bar widget).
//
// All other file browsers created by using the factory function are
// responsible for their own restoration behavior, if any.
restorer.add(fbWidget, namespace);
let creatorCmds: { [key: string]: DisposableSet } = Object.create(null);
let addCreator = (name: string) => {
let disposables = creatorCmds[name] = new DisposableSet();
let command = Private.commandForName(name);
disposables.add(commands.addCommand(command, {
execute: () => fbWidget.createFrom(name),
label: `New ${name}`
}));
disposables.add(palette.addItem({ command, category }));
};
each(registry.creators(), creator => { addCreator(creator.name); });
// Add a context menu to the dir listing.
let node = fbWidget.node.getElementsByClassName('jp-DirListing-content')[0];
node.addEventListener('contextmenu', (event: MouseEvent) => {
event.preventDefault();
let path = fbWidget.pathForClick(event) || '';
let ext = DocumentRegistry.extname(path);
let factories = registry.preferredWidgetFactories(ext);
let widgetNames = toArray(map(factories, factory => factory.name));
let prefix = `${namespace}-contextmenu-${++Private.id}`;
let openWith: Menu = null;
if (path && widgetNames.length > 1) {
let disposables = new DisposableSet();
let command: string;
openWith = new Menu({ commands });
openWith.title.label = 'Open With...';
openWith.disposed.connect(() => { disposables.dispose(); });
for (let widgetName of widgetNames) {
command = `${prefix}:${widgetName}`;
disposables.add(commands.addCommand(command, {
execute: () => fbWidget.openPath(path, widgetName),
label: widgetName
}));
openWith.addItem({ command });
}
}
let menu = createContextMenu(fbWidget, openWith);
menu.open(event.clientX, event.clientY);
});
addCommands(app, fbWidget);
let menu = createMenu(app, Object.keys(creatorCmds));
mainMenu.addMenu(menu, { rank: 1 });
fbWidget.title.label = 'Files';
app.shell.addToLeftArea(fbWidget, { rank: 100 });
// If the layout is a fresh session without saved data, open file browser.
app.restored.then(layout => {
if (layout.fresh) {
app.commands.execute(CommandIDs.showBrowser, void 0);
}
});
// Handle fileCreator items as they are added.
registry.changed.connect((sender, args) => {
if (args.type === 'fileCreator') {
menu.dispose();
let name = args.name;
if (args.change === 'added') {
addCreator(name);
} else {
creatorCmds[name].dispose();
delete creatorCmds[name];
}
menu = createMenu(app, Object.keys(creatorCmds));
mainMenu.addMenu(menu, { rank: 1 });
}
});
}
示例10: toArray
node.addEventListener('contextmenu', (event: MouseEvent) => {
event.preventDefault();
let path = fbWidget.pathForClick(event) || '';
let ext = DocumentRegistry.extname(path);
let factories = registry.preferredWidgetFactories(ext);
let widgetNames = toArray(map(factories, factory => factory.name));
let prefix = `${namespace}-contextmenu-${++Private.id}`;
let openWith: Menu = null;
if (path && widgetNames.length > 1) {
let disposables = new DisposableSet();
let command: string;
openWith = new Menu({ commands });
openWith.title.label = 'Open With...';
openWith.disposed.connect(() => { disposables.dispose(); });
for (let widgetName of widgetNames) {
command = `${prefix}:${widgetName}`;
disposables.add(commands.addCommand(command, {
execute: () => fbWidget.openPath(path, widgetName),
label: widgetName
}));
openWith.addItem({ command });
}
}
let menu = createContextMenu(fbWidget, openWith);
menu.open(event.clientX, event.clientY);
});