Skip to content
Draft
1 change: 1 addition & 0 deletions Project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ version = "1.9.0"

[deps]
Distributed = "8ba89e20-285c-5b6f-9357-94700520ee1b"
IterTools = "c8e1da08-722c-5040-9ed9-7db0dc04731e"
Printf = "de0858da-6303-5e67-8744-51eddeeeb8d7"

[compat]
Expand Down
19 changes: 12 additions & 7 deletions src/ProgressMeter.jl
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@ using Distributed

export Progress, ProgressThresh, ProgressUnknown, BarGlyphs, next!, update!, cancel, finish!, @showprogress, progress_map, progress_pmap, ijulia_behavior

export spinnercollection, demospinners
include("spinners.jl")

"""
`ProgressMeter` contains a suite of utilities for displaying progress
in long-running computations. The major functions/types in this module
Expand Down Expand Up @@ -388,18 +391,20 @@ function updateProgress!(p::ProgressThresh; showvalues = (),
end
end

const spinner_chars = ['◐','◓','◑','◒']
const spinner_done = '✓'
const default_spinner_chars = spinnercollection[1]
const default_spinner_done = '✓'

spinner_char(p::ProgressUnknown, spinner::AbstractChar) = spinner
spinner_char(p::ProgressUnknown, spinner::AbstractVector{<:AbstractChar}) =
p.done ? spinner_done : spinner[p.spincounter % length(spinner) + firstindex(spinner)]
p.done ? default_spinner_done : spinner[p.spincounter % length(spinner) + firstindex(spinner)]
spinner_char(p::ProgressUnknown, spinner::Union{AbstractVector{<:AbstractChar}, AbstractVector{<:AbstractString}}) = rpad(p.done ? default_spinner_done : spinner[p.spincounter % length(spinner) + firstindex(spinner)], maximum(length, spinner))
spinner_char(p::ProgressUnknown, spinner::AbstractString) =
p.done ? spinner_done : spinner[nextind(spinner, 1, p.spincounter % length(spinner))]
p.done ? default_spinner_done : spinner[nextind(spinner, 1, p.spincounter % length(spinner))]
spinner_char(p::ProgressUnknown, spinner::Int) = spinner_char(p::ProgressUnknown, spinnercollection[spinner])

function updateProgress!(p::ProgressUnknown; showvalues = (), truncate_lines = false,
valuecolor = :blue, desc = p.desc, ignore_predictor = false,
spinner::Union{AbstractChar,AbstractString,AbstractVector{<:AbstractChar}} = spinner_chars,
spinner::Union{AbstractChar,AbstractString,AbstractVector{<:AbstractChar},AbstractVector{<:AbstractString}, Int} = default_spinner_chars,
offset::Integer = p.offset, keep = (offset == 0),
color = p.color)
!p.enabled && return
Expand All @@ -412,7 +417,7 @@ function updateProgress!(p::ProgressUnknown; showvalues = (), truncate_lines = f
elapsed_time = t - p.tinit
dur = durationstring(elapsed_time)
if p.spinner
msg = @sprintf "%c %s Time: %s" spinner_char(p, spinner) p.desc dur
msg = @sprintf "%s %s Time: %s" spinner_char(p, spinner) p.desc dur
p.spincounter += 1
else
msg = @sprintf "%s %d Time: %s" p.desc p.counter dur
Expand Down Expand Up @@ -442,7 +447,7 @@ function updateProgress!(p::ProgressUnknown; showvalues = (), truncate_lines = f
if t > p.tlast+p.dt
dur = durationstring(t-p.tinit)
if p.spinner
msg = @sprintf "%c %s Time: %s" spinner_char(p, spinner) p.desc dur
msg = @sprintf " %s %s Time: %s" string(spinner_char(p, spinner)) p.desc dur
p.spincounter += 1
else
msg = @sprintf "%s %d Time: %s" p.desc p.counter dur
Expand Down
Loading