diff --git a/lib/ui.coffee b/lib/ui.coffee deleted file mode 100644 index caf613e8..00000000 --- a/lib/ui.coffee +++ /dev/null @@ -1,42 +0,0 @@ -{CompositeDisposable, Disposable} = require 'atom' - -module.exports = - notifications: require './ui/notifications' - selector: require './ui/selector' - views: require './ui/views' - progress: require './ui/progress' - layout: require './ui/layout' - docpane: require './ui/docs' - focusutils: require './ui/focusutils' - cellhighlighter: require './ui/cellhighlighter' - - activate: (@client) -> - @subs = new CompositeDisposable - - @notifications.activate() - @subs.add atom.config.observe 'julia-client.uiOptions.highlightCells', (val) => - if val - @cellhighlighter.activate() - else - @cellhighlighter.deactivate() - @subs.add new Disposable => - @cellhighlighter.deactivate() - - @subs.add @client.onAttached => - @notifications.show("Client Connected") - @subs.add @client.onDetached => - @ink?.Result.invalidateAll() - - deactivate: -> - @subs.dispose() - - consumeInk: (@ink) -> - @views.ink = @ink - @selector.activate(@ink) - @docpane.activate(@ink) - @progress.activate(@ink) - @focusutils.activate(@ink) - @subs.add(new Disposable(=> - @docpane.deactivate() - @progress.deactivate() - @focusutils.deactivate())) diff --git a/lib/ui.js b/lib/ui.js new file mode 100644 index 00000000..c8262261 --- /dev/null +++ b/lib/ui.js @@ -0,0 +1,73 @@ +'use babel' +import { CompositeDisposable, Disposable } from 'atom'; + +// TODO use babel to export ... from ... +import notifications from './ui/notifications' +import * as selector from './ui/selector' +import views from './ui/views' +import progress from './ui/progress' +import * as layout from './ui/layout' +import * as docpane from './ui/docs' +import * as focusutils from './ui/focusutils' +import * as cellhighlighter from './ui/cellhighlighter' + +exports.notifications = notifications +exports.selector = selector +exports.views = views +exports.progress = progress +exports.layout = layout +exports.docpane = docpane +exports.focusutils = focusutils +exports.cellhighlighter = cellhighlighter + +let client; +let subs; +let ink; + +export function activate(client_in) { + client = client_in; + subs = new CompositeDisposable; + + notifications.activate(); + subs.add(atom.config.observe('julia-client.uiOptions.highlightCells', val => { + if (val) { + cellhighlighter.activate(); + } else { + cellhighlighter.deactivate(); + } + }) + ); + subs.add(new Disposable(() => { + cellhighlighter.deactivate(); + }) + ); + + subs.add(client.onAttached(() => { + notifications.show("Client Connected"); + }) + ); + subs.add(client.onDetached(() => { + if (ink) { + ink.Result.invalidateAll() + } + }) + ); +} + +export function deactivate() { + subs.dispose(); +} + +export function consumeInk(ink_in) { + ink = ink_in; + views.ink = ink; + selector.activate(ink); + docpane.activate(ink); + progress.activate(ink); + focusutils.activate(ink); + subs.add(new Disposable(() => { + docpane.deactivate(); + progress.deactivate(); + focusutils.deactivate(); + })); +} diff --git a/lib/ui/layout.js b/lib/ui/layout.js index 0e4dadbc..f40551d7 100644 --- a/lib/ui/layout.js +++ b/lib/ui/layout.js @@ -6,9 +6,9 @@ const repl = () => { const workspace = () => { return require('../runtime').workspace } -const documentation = () => { - return require('../ui').docpane -} + +import {docpane as documentation} from '../ui' + const plotPane = () => { return require('../runtime').plots }