diff options
Diffstat (limited to 'src/audtool')
-rw-r--r-- | src/audtool/audtool.h | 4 | ||||
-rw-r--r-- | src/audtool/handlers_general.c | 38 | ||||
-rw-r--r-- | src/audtool/handlers_playback.c | 13 | ||||
-rw-r--r-- | src/audtool/main.c | 32 | ||||
-rw-r--r-- | src/audtool/wrappers.c | 23 |
5 files changed, 92 insertions, 18 deletions
diff --git a/src/audtool/audtool.h b/src/audtool/audtool.h index cb62488..c0bb88d 100644 --- a/src/audtool/audtool.h +++ b/src/audtool/audtool.h @@ -114,6 +114,8 @@ void playback_stopped (int, char * *); void playback_status (int, char * *); void playback_seek (int, char * *); void playback_seek_relative (int, char * *); +void playback_record (int, char * *); +void playback_recording (int, char * *); void mainwin_show (int, char * *); void show_preferences_window (int, char * *); @@ -123,6 +125,8 @@ void shutdown_audacious_server (int, char * *); void show_about_window (int, char * *); void get_version (int argc, char * * argv); +void plugin_is_enabled (int argc, char * * argv); +void plugin_enable (int argc, char * * argv); void equalizer_get_eq (int argc, char * * argv); void equalizer_get_eq_preamp (int argc, char * * argv); diff --git a/src/audtool/handlers_general.c b/src/audtool/handlers_general.c index 67e00f3..68c9da5 100644 --- a/src/audtool/handlers_general.c +++ b/src/audtool/handlers_general.c @@ -88,6 +88,10 @@ void shutdown_audacious_server (int argc, char * * argv) void get_handlers_list (int argc, char * * argv) { + audtool_report ("Usage: audtool [-#] COMMAND ..."); + audtool_report (" where # (1-9) selects the instance of Audacious to control"); + audtool_report (""); + for (int i = 0; handlers[i].name; i ++) { if (! g_ascii_strcasecmp ("<sep>", handlers[i].name)) @@ -98,6 +102,7 @@ void get_handlers_list (int argc, char * * argv) audtool_report (""); audtool_report ("Commands may be prefixed with '--' (GNU-style long options) or not, your choice."); + audtool_report ("Show/hide and enable/disable commands take an optional 'on' or 'off' argument."); audtool_report ("Report bugs to http://redmine.audacious-media-player.org/projects/audacious"); } @@ -112,3 +117,36 @@ void get_version (int argc, char * * argv) audtool_report ("Audacious %s", version); g_free (version); } + +void plugin_is_enabled (int argc, char * * argv) +{ + if (argc != 2) + { + audtool_whine_args (argv[0], "<plugin>"); + exit (1); + } + + gboolean enabled = FALSE; + obj_audacious_call_plugin_is_enabled_sync (dbus_proxy, argv[1], & enabled, NULL, NULL); + + exit (! enabled); +} + +void plugin_enable (int argc, char * * argv) +{ + gboolean enable = TRUE; + + if (argc == 2) + enable = TRUE; + else if (argc == 3 && ! g_ascii_strcasecmp (argv[2], "on")) + enable = TRUE; + else if (argc == 3 && ! g_ascii_strcasecmp (argv[2], "off")) + enable = FALSE; + else + { + audtool_whine_args (argv[0], "<plugin> <on/off>"); + exit (1); + } + + obj_audacious_call_plugin_enable_sync (dbus_proxy, argv[1], enable, NULL, NULL); +} diff --git a/src/audtool/handlers_playback.c b/src/audtool/handlers_playback.c index 1b3a90a..8a812b7 100644 --- a/src/audtool/handlers_playback.c +++ b/src/audtool/handlers_playback.c @@ -101,3 +101,16 @@ void playback_seek_relative (int argc, char * * argv) obj_audacious_call_time_sync (dbus_proxy, & oldtime, NULL, NULL); obj_audacious_call_seek_sync (dbus_proxy, MAX (0, oldtime + atof (argv[1]) * 1000), NULL, NULL); } + +void playback_record (int argc, char * * argv) +{ + obj_audacious_call_record_sync (dbus_proxy, NULL, NULL); +} + +void playback_recording (int argc, char * * argv) +{ + gboolean recording = FALSE; + obj_audacious_call_recording_sync (dbus_proxy, & recording, NULL, NULL); + + exit (! recording); +} diff --git a/src/audtool/main.c b/src/audtool/main.c index 2ed0fa9..c49d62e 100644 --- a/src/audtool/main.c +++ b/src/audtool/main.c @@ -20,6 +20,7 @@ #include <stdio.h> #include <stdlib.h> +#include <string.h> #include <locale.h> #include "audtool.h" @@ -54,6 +55,8 @@ const struct commandhandler handlers[] = {"playback-status", playback_status, "print status (playing/paused/stopped)", 0}, {"playback-seek", playback_seek, "seek to given time", 1}, {"playback-seek-relative", playback_seek_relative, "seek to relative time offset", 1}, + {"playback-record", playback_record, "toggle stream recording", 0}, + {"playback-recording", playback_recording, "exit code = 0 if recording", 0}, {"<sep>", NULL, "Playlist commands", 0}, {"playlist-advance", playlist_advance, "skip to next song", 0}, @@ -121,6 +124,8 @@ const struct commandhandler handlers[] = {"about-show", show_about_window, "show/hide About window", 1}, {"version", get_version, "print Audacious version", 0}, + {"plugin-is-enabled", plugin_is_enabled, "exit code = 0 if plugin is enabled", 1}, + {"plugin-enable", plugin_enable, "enable/disable plugin", 2}, {"shutdown", shutdown_audacious_server, "shut down Audacious", 0}, {"help", get_handlers_list, "print this help", 0}, @@ -140,7 +145,7 @@ static void audtool_disconnect (void) connection = NULL; } -static void audtool_connect (void) +static void audtool_connect (int instance) { GError * error = NULL; @@ -153,8 +158,14 @@ static void audtool_connect (void) exit (EXIT_FAILURE); } - dbus_proxy = obj_audacious_proxy_new_sync (connection, 0, - "org.atheme.audacious", "/org/atheme/audacious", NULL, & error); + char name[32]; + if (instance == 1) + strcpy (name, "org.atheme.audacious"); + else + sprintf (name, "org.atheme.audacious-%d", instance); + + dbus_proxy = obj_audacious_proxy_new_sync (connection, 0, name, + "/org/atheme/audacious", NULL, & error); if (! dbus_proxy) { @@ -169,7 +180,8 @@ static void audtool_connect (void) int main (int argc, char * * argv) { - int i, j = 0, k = 0; + int instance = 1; + int i, j, k = 0; setlocale (LC_CTYPE, ""); @@ -177,7 +189,15 @@ int main (int argc, char * * argv) g_type_init(); #endif - audtool_connect (); + // parse instance number (must come first) + if (argc >= 2 && argv[1][0] == '-' && argv[1][1] >= '1' && argv[1][1] <= '9' && ! argv[1][2]) + { + instance = argv[1][1] - '0'; + argc --; + argv ++; + } + + audtool_connect (instance); if (argc < 2) { @@ -193,7 +213,7 @@ int main (int argc, char * * argv) ! g_ascii_strcasecmp (g_strconcat ("--", handlers[i].name, NULL), argv[j])) && g_ascii_strcasecmp ("<sep>", handlers[i].name)) { - int numargs = handlers[i].args + 1 < argc - j ? handlers[i].args + 1 : argc - j; + int numargs = MIN (handlers[i].args + 1, argc - j); handlers[i].handler (numargs, & argv[j]); j += handlers[i].args; k ++; diff --git a/src/audtool/wrappers.c b/src/audtool/wrappers.c index c255954..35afa35 100644 --- a/src/audtool/wrappers.c +++ b/src/audtool/wrappers.c @@ -24,19 +24,18 @@ void generic_on_off (int argc, char * * argv, OnOffFunc func) { - gboolean show = TRUE; - - if (argc >= 2) + gboolean show; + + if (argc == 1) + show = TRUE; + else if (argc == 2 && ! g_ascii_strcasecmp (argv[1], "on")) + show = TRUE; + else if (argc == 2 && ! g_ascii_strcasecmp (argv[1], "off")) + show = FALSE; + else { - if (! g_ascii_strcasecmp (argv[1], "on")) - show = TRUE; - else if (! g_ascii_strcasecmp (argv[1], "off")) - show = FALSE; - else - { - audtool_whine_args (argv[0], "<on/off>"); - exit (1); - } + audtool_whine_args (argv[0], "<on/off>"); + exit (1); } func (dbus_proxy, show, NULL, NULL); |