Merge pull request #1615 from pfitzseb/sp/junodisplay

Fix display on Juno 0.7
This commit is contained in:
Daniel Schwabeneder 2018-08-04 06:05:00 +02:00 committed by GitHub
commit 4860bf3f19
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 47 deletions

View File

@ -624,7 +624,7 @@ end
function _update_min_padding!(sp::Subplot{GRBackend}) function _update_min_padding!(sp::Subplot{GRBackend})
dpi = sp.plt[:thickness_scaling] dpi = sp.plt[:thickness_scaling]
if !haskey(ENV, "GKSwstype") if !haskey(ENV, "GKSwstype")
if isijulia() || (isdefined(Main, :Juno) && Juno.isactive()) if isijulia()
ENV["GKSwstype"] = "svg" ENV["GKSwstype"] = "svg"
end end
end end

View File

@ -199,8 +199,12 @@ for mime in ("text/plain", "text/html", "image/png", "image/eps", "image/svg+xml
"application/eps", "application/pdf", "application/postscript", "application/eps", "application/pdf", "application/postscript",
"application/x-tex") "application/x-tex")
@eval function Base.show(io::IO, m::MIME{Symbol($mime)}, plt::Plot) @eval function Base.show(io::IO, m::MIME{Symbol($mime)}, plt::Plot)
prepare_output(plt) if haskey(io, :juno_plotsize)
_show(io, m, plt) showjuno(io, m, plt)
else
prepare_output(plt)
_show(io, m, plt)
end
end end
end end
@ -311,52 +315,22 @@ end
# --------------------------------------------------------- # ---------------------------------------------------------
# Atom PlotPane # Atom PlotPane
# --------------------------------------------------------- # ---------------------------------------------------------
@require Juno = "e5e0dc1b-0480-54bc-9374-aad01c23163d" begin function showjuno(io::IO, m, plt)
import Hiccup, Media sz = plt[:size]
dpi = plt[:dpi]
thickness_scaling = plt[:thickness_scaling]
if Juno.isactive() jsize = get(io, :juno_plotsize, [400, 500])
Media.media(Plot, Media.Plot)
function Juno.render(e::Juno.Editor, plt::Plot) scale = minimum(jsize[i] / sz[i] for i in 1:2)
Juno.render(e, nothing) plt[:size] = (s * scale for s in sz)
end plt[:dpi] = Plots.DPI
plt[:thickness_scaling] *= scale
if get(ENV, "PLOTS_USE_ATOM_PLOTPANE", true) in (true, 1, "1", "true", "yes") prepare_output(plt)
function Juno.render(pane::Juno.PlotPane, plt::Plot) _show(io, m, plt)
# temporarily overwrite size to be Atom.plotsize
sz = plt[:size]
dpi = plt[:dpi]
thickness_scaling = plt[:thickness_scaling]
jsize = Juno.plotsize()
jsize[1] == 0 && (jsize[1] = 400)
jsize[2] == 0 && (jsize[2] = 500)
scale = minimum(jsize[i] / sz[i] for i in 1:2) plt[:size] = sz
plt[:size] = (s * scale for s in sz) plt[:dpi] = dpi
plt[:dpi] = Plots.DPI plt[:thickness_scaling] = thickness_scaling
plt[:thickness_scaling] *= scale
Juno.render(pane, HTML(stringmime(MIME("text/html"), plt)))
plt[:size] = sz
plt[:dpi] = dpi
plt[:thickness_scaling] = thickness_scaling
end
# special handling for PlotlyJS
function Juno.render(pane::Juno.PlotPane, plt::Plot{PlotlyJSBackend})
display(Plots.PlotsDisplay(), plt)
end
else
function Juno.render(pane::Juno.PlotPane, plt::Plot)
display(Plots.PlotsDisplay(), plt)
s = "PlotPane turned off. Unset ENV[\"PLOTS_USE_ATOM_PLOTPANE\"] and restart Julia to enable it."
Juno.render(pane, HTML(s))
end
end
# special handling for plotly... use PlotsDisplay
function Juno.render(pane::Juno.PlotPane, plt::Plot{PlotlyBackend})
display(Plots.PlotsDisplay(), plt)
s = "PlotPane turned off. The plotly backend cannot render in the PlotPane due to javascript issues. Plotlyjs is similar to plotly and is compatible with the plot pane."
Juno.render(pane, HTML(s))
end
end
end end