summaryrefslogtreecommitdiffstats
path: root/player/javascript
diff options
context:
space:
mode:
authorGuido Cella <guido@guidocella.xyz>2024-01-02 18:58:32 +0100
committerDudemanguy <random342@airmail.cc>2024-01-13 02:53:08 +0000
commit871f7a152a3f0b3561a627d21f7417d10ac9c25c (patch)
treec793a9c700b2e52b2a896234b679af5ec9c3f006 /player/javascript
parent2dd3951a9c05e7a4fc0a614f13de1bfe0e7f132f (diff)
downloadmpv-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.js47
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