diff options
| author | navewindre <boneyaard@gmail.com> | 2025-04-05 03:00:29 +0200 |
|---|---|---|
| committer | navewindre <boneyaard@gmail.com> | 2025-04-05 03:00:29 +0200 |
| commit | d6c4365b8de32b621ac46074a9b69908b95686c0 (patch) | |
| tree | 495cb5b1aa7e68ab6ec07fa5fb09904a8c7e47e7 /config/mpv/scripts/subs2srs/menu.lua | |
| parent | b24463f3d045783b8f4e72926054d53b908e150f (diff) | |
a
Diffstat (limited to 'config/mpv/scripts/subs2srs/menu.lua')
| -rw-r--r-- | config/mpv/scripts/subs2srs/menu.lua | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/config/mpv/scripts/subs2srs/menu.lua b/config/mpv/scripts/subs2srs/menu.lua new file mode 100644 index 0000000..4d34937 --- /dev/null +++ b/config/mpv/scripts/subs2srs/menu.lua @@ -0,0 +1,77 @@ +--[[ +Copyright: Ren Tatsumoto and contributors +License: GNU GPL, version 3 or later; http://www.gnu.org/licenses/gpl.html + +Menu for mpvacious +]] + +local mp = require('mp') +local msg = require('mp.msg') +local h = require('helpers') + +local Menu = { + active = false, + keybindings = {}, + overlay = mp.create_osd_overlay and mp.create_osd_overlay('ass-events'), +} + +function Menu:new(o) + o = o or {} + setmetatable(o, self) + self.__index = self + return o +end + +function Menu:with_update(params) + return function() + local status, error = pcall(h.unpack(params)) + if not status then + msg['error'](error) + end + self:update() + end +end + +function Menu:make_osd() + return nil +end + +function Menu:update() + if self.active == false then return end + self.overlay.data = self:make_osd():get_text() + self.overlay:update() +end + +function Menu:open() + if self.overlay == nil then + h.notify("OSD overlay is not supported in " .. mp.get_property("mpv-version"), "error", 5) + return + end + + if self.active == true then + self:close() + return + end + + for _, val in pairs(self.keybindings) do + mp.add_forced_key_binding(val.key, val.key, val.fn) + end + + self.active = true + self:update() +end + +function Menu:close() + if self.active == false then + return + end + + for _, val in pairs(self.keybindings) do + mp.remove_key_binding(val.key) + end + + self.overlay:remove() + self.active = false +end + +return Menu |
