view src/audtool/handlers_general.c @ 4661:e4e7999a21bc

Move D-Bus initialization before plugin system and playlist initialization. (The other changes in this changeset are to remedy the problem arising from the move, which resulted in annoying pause during startup due to D-Bus being initialized when assumed not to be.)
author Matti Hamalainen <ccr@tnsp.org>
date Fri, 27 Jun 2008 17:57:39 +0300
parents 4e9859e8af94
children c2886b393206
line wrap: on
line source

/*
 * Audtool2
 * Copyright (c) 2007 Audacious development team
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are
 * met:
 *
 * 1. Redistributions of source code must retain the above copyright notice,
 *    this list of conditions and the following disclaimer.
 *
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * 3. The name of the author may not be used to endorse or promote products
 *    derived from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 */

#include <stdlib.h>
#include <string.h>
#include <glib.h>
#include <mowgli.h>
#include <locale.h>
#include "libaudclient/audctrl.h"
#include "audtool.h"

void get_volume(gint argc, gchar **argv)
{
	gint i;

	i = audacious_remote_get_main_volume(dbus_proxy);

	audtool_report("%d", i);
}

void set_volume(gint argc, gchar **argv)
{
	gint i, current_volume;

	if (argc < 2)
	{
		audtool_whine_args(argv[0], "<level>", argv[0]);
		exit(1);
	}

	current_volume = audacious_remote_get_main_volume(dbus_proxy);
	switch (argv[1][0]) 
	{
		case '+':
		case '-':
			i = current_volume + atoi(argv[1]);
			break;
		default:
			i = atoi(argv[1]);
			break;
	}

	audacious_remote_set_main_volume(dbus_proxy, i);
}

void mainwin_show(gint argc, gchar **argv)
{
	if (argc < 2) {
        audtool_whine_args(argv[0], "<on/off>");
        exit(1);
    }

    if (!g_ascii_strcasecmp(argv[1], "on")) {
        audacious_remote_main_win_toggle(dbus_proxy, TRUE);
        return;
    }
    else if (!g_ascii_strcasecmp(argv[1], "off")) {
        audacious_remote_main_win_toggle(dbus_proxy, FALSE);
        return;
    }
}

void playlist_show(gint argc, gchar **argv)
{
	if (argc < 2) {
        audtool_whine_args(argv[0], "<on/off>");
        exit(1);
    }

    if (!g_ascii_strcasecmp(argv[1], "on")) {
        audacious_remote_pl_win_toggle(dbus_proxy, TRUE);
        return;
    }
    else if (!g_ascii_strcasecmp(argv[1], "off")) {
        audacious_remote_pl_win_toggle(dbus_proxy, FALSE);
        return;
    }
}

void equalizer_show(gint argc, gchar **argv)
{
	if (argc < 2) {
        audtool_whine_args(argv[0], "<on/off>");
        exit(1);
    }

    if (!g_ascii_strcasecmp(argv[1] ,"on")) {
        audacious_remote_eq_win_toggle(dbus_proxy, TRUE);
        return;
    }
    else if (!g_ascii_strcasecmp(argv[1] ,"off")) {
        audacious_remote_eq_win_toggle(dbus_proxy, FALSE);
        return;
    }
}

void show_preferences_window(gint argc, gchar **argv)
{
    gboolean show = TRUE;

	if (argc < 2) {
#if 0
        audtool_whine_args(argv[0], "<on/off>");
        exit(1);
#else
        audacious_remote_toggle_prefs_box(dbus_proxy, show);
        return;
#endif
    }

    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);
    }

	audacious_remote_toggle_prefs_box(dbus_proxy, show);
}

void show_about_window(gint argc, gchar **argv)
{
    gboolean show = TRUE;

	if (argc < 2) {
#if 0
        audtool_whine_args(argv[0], "<on/off>");
        exit(1);
#else
        audacious_remote_toggle_about_box(dbus_proxy, show);
        return;
#endif
    }

    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);
    }

	audacious_remote_toggle_about_box(dbus_proxy, show);
}

void show_jtf_window(gint argc, gchar **argv)
{
    gboolean show = TRUE;

	if (argc < 2) {
#if 0
        audtool_whine_args(argv[0], "<on/off>");
        exit(1);
#else
        audacious_remote_toggle_jtf_box(dbus_proxy, show);
        return;
#endif
    }
    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);
    }

	audacious_remote_toggle_jtf_box(dbus_proxy, show);
}

void show_filebrowser(gint argc, gchar **argv)
{
    gboolean show = TRUE;

	if (argc < 2) {
#if 0
        audtool_whine_args(argv[0], "<on/off>");
        exit(1);
#else
        audacious_remote_toggle_filebrowser(dbus_proxy, show);
        return;
#endif
    }

    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);
    }

	audacious_remote_toggle_filebrowser(dbus_proxy, show);
}

void shutdown_audacious_server(gint argc, gchar **argv)
{
	audacious_remote_quit(dbus_proxy);
}

void get_handlers_list(gint argc, gchar **argv)
{
	gint i;

	for (i = 0; handlers[i].name != NULL; i++)
	{
		if (!g_ascii_strcasecmp("<sep>", handlers[i].name))
			audtool_report("%s%s:", i == 0 ? "" : "\n", handlers[i].desc);
		else
			audtool_report("   %-34s - %s", handlers[i].name, handlers[i].desc);
	}

    audtool_report("");
	audtool_report("Handlers may be prefixed with `--' (GNU-style long-options) or not, your choice.");
	audtool_report("Report bugs to http://bugzilla.atheme.org/");
}

void activate(gint argc, gchar **argv)
{
    audacious_remote_activate(dbus_proxy);
}

void toggle_aot(gint argc, gchar **argv)
{
    if (argc < 2)
    {
        audtool_whine_args(argv[0], "<on/off>");
        exit(1);
    }

    if (!g_ascii_strcasecmp(argv[1], "on")) {
        audacious_remote_toggle_aot(dbus_proxy, TRUE);
        return;
    }
    else if (!g_ascii_strcasecmp(argv[1], "off")) {
        audacious_remote_toggle_aot(dbus_proxy, FALSE);
        return;
    }
}

void get_skin(gint argc, gchar **argv)
{
    gchar *skin = NULL;
    skin = audacious_remote_get_skin(dbus_proxy);
    audtool_report("%s", skin);
    g_free(skin);
}

void set_skin(gint argc, gchar **argv)
{
    if (argc < 2)
    {
        audtool_whine_args(argv[0], "<skin>");
        exit(1);
    }

    if(!argv[1] || !strcmp(argv[1], ""))
       return;

    audacious_remote_set_skin(dbus_proxy, argv[1]);
}

void get_version(gint argc, gchar **argv)
{
    gchar *version = NULL;
    version = audacious_remote_get_version(dbus_proxy);
    if(version)
        audtool_report("Audacious %s", version);
    g_free(version);
}