diff --git a/plot/movie.jl b/plot/movie.jl index 6733590dece2b1c05c5e7fd680de785ab523425c..9744e5ed372546bb2e1969571d47be858338791c 100644 --- a/plot/movie.jl +++ b/plot/movie.jl @@ -6,6 +6,7 @@ import REPL: TerminalMenus using Printf GLMakie.activate!() using dg1d +using TOML function moving_average(y::AbstractVector; w=40) @@ -30,11 +31,13 @@ function moving_average(y::AbstractVector; w=40) end -function select(dir; display_basename=true) +function select(dir; display_basename=true, filter_previous=true) dir = abspath(normpath(dir)) root, subdirs, _ = first(walkdir(dir)) - filter!(subdirs) do d - !endswith(d, ".previous") + if filter_previous + filter!(subdirs) do d + !endswith(d, ".previous") + end end TerminalMenus.Config(; charset=:unicode, scroll_wrap=true) menu = TerminalMenus.MultiSelectMenu(subdirs) @@ -43,10 +46,36 @@ function select(dir; display_basename=true) end +function select_reftest(dir) + dir = abspath(normpath(dir)) + testdir = normpath(joinpath(dir, "..", "tests")) + testconfig = joinpath(dir, "testconfig.toml") + if !isfile(testconfig) + error("$dir is not a directory with reftests") + end + config = TOML.parsefile(testconfig) + filter!(config) do (k,v) + !startswith(k, "default_") + end + avail_tests = collect(keys(config)) + filter(avail_tests) do test + isfile(joinpath(dir, test)) && isfile(joinpath(testdir, test)) + end + sort!(avail_tests) + TerminalMenus.Config(; charset=:unicode, scroll_wrap=true) + menu = TerminalMenus.RadioMenu(avail_tests) + selected = TerminalMenus.request("Select reftest:", menu) + reftestname = avail_tests[selected] + reftest = joinpath(dir, reftestname) + newresult = joinpath(testdir, reftestname) + return [ reftest, newresult ] +end + + function get_parameter_file(dir) dir = abspath(dir) @assert isdir(dir) "'$dir' is not a directory name" - dirname = dirname_path(dir) + dirname = dg1d.dirname_path(dir) filename = if endswith(dirname, ".previous") joinpath(dir, "$(splitext(dirname)[1]).toml") else