diff options
author | Guido Cella <guido@guidocella.xyz> | 2024-01-02 18:58:32 +0100 |
---|---|---|
committer | Dudemanguy <random342@airmail.cc> | 2024-01-13 02:53:08 +0000 |
commit | 871f7a152a3f0b3561a627d21f7417d10ac9c25c (patch) | |
tree | c793a9c700b2e52b2a896234b679af5ec9c3f006 /player/javascript | |
parent | 2dd3951a9c05e7a4fc0a614f13de1bfe0e7f132f (diff) | |
download | mpv-871f7a152a3f0b3561a627d21f7417d10ac9c25c.tar.bz2 mpv-871f7a152a3f0b3561a627d21f7417d10ac9c25c.tar.xz |
scripting: add mp.input
This lets scripts get textual input from the user using console.lua.
Diffstat (limited to 'player/javascript')
-rw-r--r-- | player/javascript/defaults.js | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/player/javascript/defaults.js b/player/javascript/defaults.js index be4fca61c9..cc2ca3f232 100644 --- a/player/javascript/defaults.js +++ b/player/javascript/defaults.js @@ -643,6 +643,53 @@ function read_options(opts, id, on_update, conf_override) { mp.options = { read_options: read_options }; /********************************************************************** +* input +*********************************************************************/ +mp.input = { + get: function(t) { + mp.commandv("script-message-to", "console", "get-input", mp.script_name, + JSON.stringify({ + prompt: t.prompt, + default_text: t.default_text, + cursor_position: t.cursor_position, + id: t.id, + })); + + mp.register_script_message("input-event", function (type, text, cursor_position) { + if (t[type]) { + var result = t[type](text, cursor_position); + + if (type == "complete" && result) { + mp.commandv("script-message-to", "console", "complete", + JSON.stringify(result[0]), result[1]); + } + } + + if (type == "closed") { + mp.unregister_script_message("input-event"); + } + }) + + return true; + }, + terminate: function () { + mp.commandv("script-message-to", "console", "disable"); + }, + log: function (message, style) { + mp.commandv("script-message-to", "console", "log", + JSON.stringify({ text: message, style: style })); + }, + log_error: function (message) { + mp.commandv("script-message-to", "console", "log", + JSON.stringify({ text: message, error: true })); + }, + set_log: function (log) { + mp.commandv("script-message-to", "console", "set-log", + JSON.stringify(log)); + } +} + +/********************************************************************** * various *********************************************************************/ g.print = mp.msg.info; // convenient alias |