diff options
author | Přemysl Janouch <p.janouch@gmail.com> | 2017-06-26 03:51:53 +0200 |
---|---|---|
committer | Přemysl Janouch <p.janouch@gmail.com> | 2017-06-26 03:51:53 +0200 |
commit | 33f5ba0b60a0d60bd63e3bde1e07fc2a2ffc456a (patch) | |
tree | 4e68e9d764c14024f1155729f633cdeccd657ed4 /nncmpp.c | |
parent | 4261c8146812f0e48b8090e79c05cbc5db4bbd41 (diff) | |
download | nncmpp-33f5ba0b60a0d60bd63e3bde1e07fc2a2ffc456a.tar.gz nncmpp-33f5ba0b60a0d60bd63e3bde1e07fc2a2ffc456a.tar.xz nncmpp-33f5ba0b60a0d60bd63e3bde1e07fc2a2ffc456a.zip |
Allow running arbitrary MPD commands
Diffstat (limited to 'nncmpp.c')
-rw-r--r-- | nncmpp.c | 22 |
1 files changed, 22 insertions, 0 deletions
@@ -1555,6 +1555,7 @@ app_goto_tab (int tab_index) \ XX( MPD_ADD, "Add song to playlist" ) \ XX( MPD_REPLACE, "Replace playlist with song" ) \ + XX( MPD_COMMAND, "Send a raw command to MPD" ) \ \ XX( CHOOSE, "Choose item" ) \ XX( DELETE, "Delete item" ) \ @@ -1844,6 +1845,22 @@ app_setvol (int value) return result; } +static void +app_on_editor_end (bool confirmed) +{ + struct mpd_client *c = &g.client; + if (!confirmed) + return; + + size_t len; + char *u8 = (char *) u32_to_u8 (g.editor_line, g.editor_len + 1, NULL, &len); + mpd_client_send_command_raw (c, u8); + free (u8); + + mpd_client_add_task (c, mpd_on_simple_response, NULL); + mpd_client_idle (c, 0); +} + // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - static bool @@ -1865,6 +1882,10 @@ app_process_action (enum action action) clear (); app_invalidate (); return true; + case ACTION_MPD_COMMAND: + app_editor_start (':'); + g.on_editor_end = app_on_editor_end; + return true; default: return false; @@ -2071,6 +2092,7 @@ g_default_bindings[] = { "Backspace", ACTION_UP, {}}, { "a", ACTION_MPD_ADD, {}}, { "r", ACTION_MPD_REPLACE, {}}, + { ":", ACTION_MPD_COMMAND, {}}, { "Left", ACTION_MPD_PREVIOUS, {}}, { "Right", ACTION_MPD_NEXT, {}}, |