it('should copy when clicked', () => {
   let button = ToolbarItems.createCopyButton(panel);
   let count = panel.content.widgets.length;
   Widget.attach(button, document.body);
   button.node.click();
   expect(panel.content.widgets.length).to.be(count);
   expect(clipboard.hasData(JUPYTER_CELL_MIME)).to.be(true);
   button.dispose();
 });
 it('should cut when clicked', () => {
   let button = ToolbarItems.createCutButton(panel);
   let count = panel.content.childCount();
   Widget.attach(button, document.body);
   button.node.click();
   expect(panel.content.childCount()).to.be(count - 1);
   expect(clipboard.hasData(JUPYTER_CELL_MIME)).to.be(true);
   button.dispose();
 });
Example #3
0
 /**
  * Copy or cut the selected cell data to a clipboard.
  *
  * @param widget - The target notebook widget.
  *
  * @param clipboard - The clipboard object.
  *
  * @param cut - Whether to copy or cut.
  */
  function copyOrCut(widget: Notebook, clipboard: IClipboard, cut: boolean): void {
    if (!widget.model || !widget.activeCell) {
      return;
    }
    widget.mode = 'command';
    clipboard.clear();
    let data: nbformat.IBaseCell[] = [];
    each(widget.widgets, child => {
      if (widget.isSelected(child)) {
        data.push(child.model.toJSON());
      }
    });
    clipboard.setData(JUPYTER_CELL_MIME, data);
    if (cut) {
      deleteCells(widget);
    } else {
      widget.deselectAll();
    }
  }
Example #4
0
  function paste(widget: Notebook, clipboard: IClipboard): void {
    if (!widget.model || !widget.activeCell) {
      return;
    }
    if (!clipboard.hasData(JUPYTER_CELL_MIME)) {
      return;
    }
    let values = clipboard.getData(JUPYTER_CELL_MIME) as nbformat.IBaseCell[];
    let model = widget.model;
    let newCells: ICellModel[] = [];
    widget.mode = 'command';

    each(values, cell => {
      switch (cell.cell_type) {
      case 'code':
        newCells.push(model.contentFactory.createCodeCell({ cell }));
        break;
      case 'markdown':
        newCells.push(model.contentFactory.createMarkdownCell({ cell }));
        break;
      default:
        newCells.push(model.contentFactory.createRawCell({ cell }));
        break;
      }
    });
    let index = widget.activeCellIndex;

    let cells = widget.model.cells;
    cells.beginCompoundOperation();
    each(newCells, cell => {
      cells.insert(++index, cell);
    });
    cells.endCompoundOperation();

    widget.activeCellIndex += newCells.length;
    widget.deselectAll();
  }
Example #5
0
 afterEach(() => {
   widget.dispose();
   clipboard.clear();
 });
Example #6
0
 it('should be a no-op if there is no model', () => {
   widget.model = null;
   NotebookActions.cut(widget, clipboard);
   expect(clipboard.hasData(JUPYTER_CELL_MIME)).to.be(false);
 });