/*
 * Copyright (c) 2007 Brian Tarricone <bjt23@cornell.edu>
 *
 * Licensed for use and redistribution under the terms of the GNU General
 * Public License, version 2 ONLY.  See:
 * http://www.gnu.org/licenses/gpl.html
 */

/* To compile:
 *   cc -o ws-status ws-status.c `pkg-config libxfcegui4-1.0 --cflags --libs`
 */

#include <gtk/gtk.h>
#include <libxfcegui4/libxfcegui4.h>

static gboolean
ws_status_hide_window(gpointer data)
{
    gtk_widget_hide(GTK_WIDGET(data));
    return FALSE;
}

static void
ws_status_workspace_changed(NetkScreen *netk_screen,
                            gpointer user_data)
{
    GtkWidget *win = user_data, *lbl = gtk_bin_get_child(GTK_BIN(win));
    NetkWorkspace *ws = netk_screen_get_active_workspace(netk_screen);
    gchar *name = g_strdup_printf("<span size='xx-large'>%s</span>",
                                  netk_workspace_get_name(ws));
    
    gtk_label_set_markup(GTK_LABEL(lbl), name);
    g_free(name);
    
    gtk_widget_show(win);
    gtk_window_move(GTK_WINDOW(win), 0, 0);
    
    g_timeout_add(2000, ws_status_hide_window, win);
}

int
main(int argc,
     char **argv)
{
    GtkWidget *win, *lbl;
    NetkScreen *netk_screen;
    
    gtk_init(&argc, &argv);
    
    win = gtk_window_new(GTK_WINDOW_POPUP);
    gtk_window_set_accept_focus(GTK_WINDOW(win), FALSE);
    gtk_container_set_border_width(GTK_CONTAINER(win), 12);
    
    lbl = gtk_label_new("");
    gtk_label_set_use_markup(GTK_LABEL(lbl), TRUE);
    gtk_widget_show(lbl);
    gtk_container_add(GTK_CONTAINER(win), lbl);
    
    netk_screen = netk_screen_get_default();
    netk_screen_force_update(netk_screen);
    g_signal_connect(G_OBJECT(netk_screen), "active-workspace-changed",
                     G_CALLBACK(ws_status_workspace_changed), win);
    
    gtk_main();
    
    return 0;
}
