Touchbar icon support in notebooks (#4998)

* Touchbar icon support in notebooks
- updated shortcut keys to only work if notebook is active
- Added icons
- Now have 1 "add cell" icon that prompts for code/text.
This is useful as there wasn't an icon to differentiate
This commit is contained in:
Kevin Cunnane
2019-04-11 16:43:27 -07:00
committed by GitHub
parent c8f6937166
commit 3349151d4c
5 changed files with 47 additions and 15 deletions

View File

@@ -57,7 +57,8 @@
},
{
"command": "notebook.command.runactivecell",
"title": "%notebook.command.runactivecell%"
"title": "%notebook.command.runactivecell%",
"icon": "resources/dark/touchbar_run_cell.png"
},
{
"command": "notebook.command.addcode",
@@ -67,6 +68,11 @@
"command": "notebook.command.addtext",
"title": "%notebook.command.addtext%"
},
{
"command": "notebook.command.addcell",
"title": "%notebook.command.addcell%",
"icon": "resources/dark/touchbar_add_cell.png"
},
{
"command": "jupyter.cmd.analyzeNotebook",
"title": "%title.analyzeJupyterNotebook%"
@@ -147,6 +153,10 @@
"command": "notebook.command.addtext",
"when": "notebookEditorVisible"
},
{
"command": "notebook.command.addcell",
"when": "false"
},
{
"command": "jupyter.task.newNotebook",
"when": "false"
@@ -172,17 +182,12 @@
{
"command": "notebook.command.runactivecell",
"when": "activeEditor == workbench.editor.notebookEditor",
"group": "1_notebook"
"group": "1_notebook@1"
},
{
"command": "notebook.command.addcode",
"command": "notebook.command.addcell",
"when": "activeEditor == workbench.editor.notebookEditor",
"group": "2_notebook"
},
{
"command": "notebook.command.addtext",
"when": "activeEditor == workbench.editor.notebookEditor",
"group": "2_notebook"
"group": "1_notebook@2"
}
],
"objectExplorer/item/context": [
@@ -222,17 +227,17 @@
{
"command": "notebook.command.runactivecell",
"key": "F5",
"when": "notebookEditorVisible"
"when": "activeEditor == workbench.editor.notebookEditor"
},
{
"command": "notebook.command.addcode",
"key": "Ctrl+Shift+C",
"when": "notebookEditorVisible"
"when": "activeEditor == workbench.editor.notebookEditor"
},
{
"command": "notebook.command.addtext",
"key": "Ctrl+Shift+T",
"when": "notebookEditorVisible"
"when": "activeEditor == workbench.editor.notebookEditor"
}
],
"notebook.languagemagics": [

View File

@@ -11,6 +11,7 @@
"notebook.command.runactivecell": "Run Cell",
"notebook.command.addcode": "Add Code Cell",
"notebook.command.addtext": "Add Text Cell",
"notebook.command.addcell": "Add Cell",
"title.analyzeJupyterNotebook": "Analyze in Notebook",
"title.newJupyterNotebook": "New Notebook",
"title.openJupyterNotebook": "Open Notebook",

Binary file not shown.

After

Width:  |  Height:  |  Size: 766 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 826 B

View File

@@ -14,14 +14,16 @@ import { JupyterController } from './jupyter/jupyterController';
import { AppContext } from './common/appContext';
import { ApiWrapper } from './common/apiWrapper';
import { IExtensionApi } from './types';
import { CellType } from './contracts/content';
const localize = nls.loadMessageBundle();
const JUPYTER_NOTEBOOK_PROVIDER = 'jupyter';
const msgSampleCodeDataFrame = localize('msgSampleCodeDataFrame', 'This sample code loads the file into a data frame and shows the first 10 results.');
const noNotebookVisible = localize('noNotebookVisible', 'No notebook editor is active');
const msgSampleCodeDataFrame = localize('msgSampleCodeDataFrame', "This sample code loads the file into a data frame and shows the first 10 results.");
const noNotebookVisible = localize('noNotebookVisible', "No notebook editor is active");
let controller: JupyterController;
type ChooseCellType = { label: string, id: CellType};
export async function activate(extensionContext: vscode.ExtensionContext): Promise<IExtensionApi> {
extensionContext.subscriptions.push(vscode.commands.registerCommand('notebook.command.new', (context?: azdata.ConnectedContext) => {
@@ -37,6 +39,30 @@ export async function activate(extensionContext: vscode.ExtensionContext): Promi
extensionContext.subscriptions.push(vscode.commands.registerCommand('notebook.command.runactivecell', () => {
runActiveCell();
}));
extensionContext.subscriptions.push(vscode.commands.registerCommand('notebook.command.addcell', async () => {
let cellType: CellType;
try {
let cellTypes: ChooseCellType[] = [{
label: localize('codeCellName', "Code"),
id: 'code'
},
{
label: localize('textCellName', "Text"),
id: 'markdown'
}];
let selection = await vscode.window.showQuickPick(cellTypes, {
placeHolder: localize('selectCellType', "What type of cell do you want to add?")
});
if (selection) {
cellType = selection.id;
}
} catch (err) {
return;
}
if (cellType) {
addCell(cellType);
}
}));
extensionContext.subscriptions.push(vscode.commands.registerCommand('notebook.command.addcode', () => {
addCell('code');
}));
@@ -97,7 +123,7 @@ async function openNotebook(): Promise<void> {
try {
let filter = {};
// TODO support querying valid notebook file types
filter[localize('notebookFiles', 'Notebooks')] = ['ipynb'];
filter[localize('notebookFiles', "Notebooks")] = ['ipynb'];
let file = await vscode.window.showOpenDialog({
filters: filter
});