add mvi not as submodule
This commit is contained in:
parent
49ebf8a1e1
commit
e6714de34b
16 changed files with 1547 additions and 0 deletions
142
.config/mvi/scripts/status-line.lua
Normal file
142
.config/mvi/scripts/status-line.lua
Normal file
|
|
@ -0,0 +1,142 @@
|
|||
local opts = {
|
||||
enabled = true,
|
||||
size = 36,
|
||||
margin = 10,
|
||||
text_top_left = "",
|
||||
text_top_right = "",
|
||||
text_bottom_left = "${filename} [${playlist-pos-1}/${playlist-count}]",
|
||||
text_bottom_right = "[${dwidth:X}x${dheight:X}]",
|
||||
}
|
||||
|
||||
local msg = require 'mp.msg'
|
||||
local assdraw = require 'mp.assdraw'
|
||||
local options = require 'mp.options'
|
||||
|
||||
options.read_options(opts, nil, function(c)
|
||||
if c["enabled"] then
|
||||
if opts.enabled then
|
||||
enable()
|
||||
else
|
||||
disable()
|
||||
end
|
||||
end
|
||||
if c["size"] or c["margin"] then
|
||||
mark_stale()
|
||||
end
|
||||
if c["text_top_left"] or
|
||||
c["text_top_right"] or
|
||||
c["text_bottom_left"] or
|
||||
c["text_bottom_right"]
|
||||
then
|
||||
observe_properties()
|
||||
mark_stale()
|
||||
end
|
||||
end)
|
||||
|
||||
local stale = true
|
||||
local active = false
|
||||
|
||||
function draw_ass(ass)
|
||||
local ww, wh = mp.get_osd_size()
|
||||
mp.set_osd_ass(ww, wh, ass)
|
||||
end
|
||||
|
||||
function refresh()
|
||||
if not stale then return end
|
||||
stale = false
|
||||
local a = assdraw:ass_new()
|
||||
local draw_text = function(text, an, x, y)
|
||||
if text == "" then return end
|
||||
local expanded = mp.command_native({ "expand-text", text})
|
||||
if not expanded then
|
||||
msg.error("Error expanding status-line")
|
||||
return
|
||||
end
|
||||
msg.verbose("Status-line changed to: " .. expanded)
|
||||
a:new_event()
|
||||
a:an(an)
|
||||
a:pos(x,y)
|
||||
a:append("{\\fs".. opts.size.. "}{\\bord1.0}")
|
||||
a:append(expanded)
|
||||
end
|
||||
local w,h = mp.get_osd_size()
|
||||
local m = opts.margin
|
||||
draw_text(opts.text_top_left, 7, m, m)
|
||||
draw_text(opts.text_top_right, 9, w-m, m)
|
||||
draw_text(opts.text_bottom_left, 1, m, h-m)
|
||||
draw_text(opts.text_bottom_right, 3, w-m, h-m)
|
||||
draw_ass(a.text)
|
||||
end
|
||||
|
||||
function mark_stale()
|
||||
stale = true
|
||||
end
|
||||
|
||||
function observe_properties()
|
||||
mp.unobserve_property(mark_stale)
|
||||
if not active then return end
|
||||
for _, str in ipairs({
|
||||
opts.text_top_left,
|
||||
opts.text_top_right,
|
||||
opts.text_bottom_left,
|
||||
opts.text_bottom_right,
|
||||
}) do
|
||||
local start = 0
|
||||
while true do
|
||||
local s, e, cap = string.find(str, "%${[?!]?([%l%d-/]*)", start)
|
||||
if not s then break end
|
||||
msg.verbose("Observing property " .. cap)
|
||||
mp.observe_property(cap, nil, mark_stale)
|
||||
start = e
|
||||
end
|
||||
end
|
||||
mp.observe_property("osd-width", nil, mark_stale)
|
||||
mp.observe_property("osd-height", nil, mark_stale)
|
||||
end
|
||||
|
||||
function enable()
|
||||
if active then return end
|
||||
active = true
|
||||
observe_properties()
|
||||
mp.register_idle(refresh)
|
||||
mark_stale()
|
||||
end
|
||||
|
||||
|
||||
function disable()
|
||||
if not active then return end
|
||||
active = false
|
||||
observe_properties()
|
||||
mp.unregister_idle(refresh)
|
||||
draw_ass("")
|
||||
end
|
||||
|
||||
function toggle()
|
||||
if active then
|
||||
disable()
|
||||
else
|
||||
enable()
|
||||
end
|
||||
end
|
||||
|
||||
if opts.enabled then
|
||||
enable()
|
||||
end
|
||||
|
||||
mp.add_key_binding(nil, "status-line-enable", enable)
|
||||
mp.add_key_binding(nil, "status-line-disable", disable)
|
||||
mp.add_key_binding(nil, "status-line-toggle", toggle)
|
||||
|
||||
-- TODO remove
|
||||
mp.add_key_binding(nil, "enable-status-line", function()
|
||||
msg.warn("This binding is deprecated, use 'status-line-enable' instead")
|
||||
enable()
|
||||
end)
|
||||
mp.add_key_binding(nil, "disable-status-line", function()
|
||||
msg.warn("This binding is deprecated, use 'status-line-disable' instead")
|
||||
disable()
|
||||
end)
|
||||
mp.add_key_binding(nil, "toggle-status-line", function()
|
||||
msg.warn("This binding is deprecated, use 'status-line-toggle' instead")
|
||||
toggle()
|
||||
end)
|
||||
Loading…
Add table
Add a link
Reference in a new issue