[Xfce4-commits] <parole:master> Delete unused files in the parole folder, only keep the dev headers.

Ali Abdallah noreply at xfce.org
Sat Nov 21 14:34:07 CET 2009


Updating branch refs/heads/master
         to 99e2c560a6604a734d7df6de489a5ccf301cb251 (commit)
       from da0c54a0bc1436ae01f9a8e0447a4063c5517179 (commit)

commit 99e2c560a6604a734d7df6de489a5ccf301cb251
Author: Ali Abdallah <ali at ali-xfce.org>
Date:   Sat Nov 21 14:31:50 2009 +0100

    Delete unused files in the parole folder, only keep the dev headers.

 parole/gmarshal.list               |    2 -
 parole/main.c                      |  327 ------
 parole/org.parole.media.list.xml   |   19 -
 parole/org.parole.media.player.xml |   38 -
 parole/parole-about.c              |   81 --
 parole/parole-about.h              |   29 -
 parole/parole-builder.c            |   73 --
 parole/parole-builder.h            |   36 -
 parole/parole-button.c             |  249 -----
 parole/parole-button.h             |   71 --
 parole/parole-conf-dialog.c        |  407 --------
 parole/parole-conf-dialog.h        |   56 -
 parole/parole-conf.c               |  409 --------
 parole/parole-conf.h               |   54 -
 parole/parole-debug.c              |   81 --
 parole/parole-debug.h              |   66 --
 parole/parole-disc-menu.c          |  334 ------
 parole/parole-disc-menu.h          |   60 --
 parole/parole-disc.c               |  438 --------
 parole/parole-disc.h               |   67 --
 parole/parole-file.c               |  389 -------
 parole/parole-filters.c            |  223 ----
 parole/parole-filters.h            |   61 --
 parole/parole-mediachooser.c       |  286 ------
 parole/parole-mediachooser.h       |   57 -
 parole/parole-medialist.c          | 1381 -------------------------
 parole/parole-medialist.h          |  114 ---
 parole/parole-module.c             |  130 ---
 parole/parole-module.h             |   67 --
 parole/parole-open-location.c      |  244 -----
 parole/parole-open-location.h      |   57 -
 parole/parole-pl-parser.c          |  660 ------------
 parole/parole-pl-parser.h          |   48 -
 parole/parole-player.c             | 1965 ------------------------------------
 parole/parole-player.h             |   60 --
 parole/parole-plugin.c             |  662 ------------
 parole/parole-plugins-manager.c    |  590 -----------
 parole/parole-plugins-manager.h    |   61 --
 parole/parole-rc-utils.c           |  204 ----
 parole/parole-rc-utils.h           |   79 --
 parole/parole-screensaver.c        |  107 --
 parole/parole-screensaver.h        |   56 -
 parole/parole-session.c            |  174 ----
 parole/parole-session.h            |   61 --
 parole/parole-statusbar.c          |  321 ------
 parole/parole-statusbar.h          |   56 -
 parole/parole-subtitle-encoding.c  |  544 ----------
 parole/parole-subtitle-encoding.h  |   41 -
 parole/parole-utils.c              |  337 ------
 parole/parole-utils.h              |   42 -
 parole/parole-vis.c                |   73 --
 parole/parole-vis.h                |   29 -
 52 files changed, 0 insertions(+), 12076 deletions(-)

diff --git a/parole/gmarshal.list b/parole/gmarshal.list
deleted file mode 100644
index 8f1d1ea..0000000
--- a/parole/gmarshal.list
+++ /dev/null
@@ -1,2 +0,0 @@
-VOID:STRING,STRING
-VOID:BOOL,POINTER
diff --git a/parole/main.c b/parole/main.c
deleted file mode 100644
index eb52f74..0000000
--- a/parole/main.c
+++ /dev/null
@@ -1,327 +0,0 @@
-/*
- * * Copyright (C) 2008-2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <unistd.h>
-#include <signal.h>
-
-#include <gtk/gtk.h>
-#include <glib.h>
-#include <gio/gio.h>
-
-#include <gst/gst.h>
-
-#include <libxfce4util/libxfce4util.h>
-
-#include <dbus/dbus-glib.h>
-#include <dbus/dbus-glib-lowlevel.h>
-
-#include "parole-player.h"
-#include "parole-plugins-manager.h"
-#include "parole-utils.h"
-#include "parole-session.h"
-#include "parole-dbus.h"
-#include "parole-builder.h"
-
-static void G_GNUC_NORETURN
-show_version (void)
-{
-    g_print (_("\n"
-             "Parole Media Player %s\n\n"
-             "Part of the Xfce Goodies Project\n"
-             "http://goodies.xfce.org\n\n"
-             "Licensed under the GNU GPL.\n\n"), VERSION);
-    exit (EXIT_SUCCESS);
-}
-
-static void
-parole_sig_handler (gint sig, gpointer data)
-{
-    ParolePlayer *player = (ParolePlayer *) data;
-
-    parole_player_terminate (player);
-}
-
-static void
-parole_send_play_disc (DBusGProxy *proxy, const gchar *uri)
-{
-    GError *error = NULL;
-    
-    dbus_g_proxy_call (proxy, "PlayDisc", &error,
-		       G_TYPE_STRING, uri,
-		       G_TYPE_INVALID,
-		       G_TYPE_INVALID);
-		       
-    if ( error )
-    {
-	g_critical ("Unable to send uri to Parole: %s", error->message);
-	g_error_free (error);
-    }
-}
-
-static void
-parole_send_files (DBusGProxy *proxy, gchar **filenames)
-{
-    GFile *file;
-    gchar **out_paths;
-    GError *error = NULL;
-    guint i;
-
-    out_paths = g_new0 (gchar *, g_strv_length (filenames));
-
-    for ( i = 0; filenames && filenames[i]; i++)
-    {
-	file = g_file_new_for_commandline_arg (filenames[i]);
-	out_paths[i] = g_file_get_path (file);
-	g_object_unref (file);
-    }
-
-    dbus_g_proxy_call (proxy, "AddFiles", &error,
-		       G_TYPE_STRV, out_paths,
-		       G_TYPE_INVALID,
-		       G_TYPE_INVALID);
-		       
-		       
-    if ( error )
-    {
-	g_critical ("Unable to send media files to Parole: %s", error->message);
-	g_error_free (error);
-    }
-
-    g_strfreev (out_paths);
-}
-
-static void
-parole_send (gchar **filenames)
-{
-    DBusGProxy *proxy;
-    
-    proxy = parole_get_proxy (PAROLE_DBUS_PLAYLIST_PATH, PAROLE_DBUS_PLAYLIST_INTERFACE);
-	
-    if ( !proxy )
-	g_error ("Unable to create proxy for %s", PAROLE_DBUS_NAME);
-	
-    if ( g_strv_length (filenames) == 1 && parole_is_uri_disc (filenames[0]))
-	parole_send_play_disc (proxy, filenames[0]);
-    else
-	parole_send_files (proxy, filenames);
-	
-    g_object_unref (proxy);
-}
-
-static void
-parole_send_message (const gchar *message)
-{
-    DBusGProxy *proxy;
-    GError *error = NULL;
-    
-    proxy = parole_get_proxy (PAROLE_DBUS_PATH, PAROLE_DBUS_INTERFACE);
-    
-    dbus_g_proxy_call (proxy, message, &error,
-		       G_TYPE_INVALID,
-		       G_TYPE_INVALID);
-		       
-    if ( error )
-    {
-	g_critical ("Failed to send message : %s : %s", message, error->message);
-	g_error_free (error);
-    }
-    
-    g_object_unref (proxy);
-
-}
-
-int main (int argc, char **argv)
-{
-    ParolePlayer *player;
-    ParoleSession *session;
-    ParolePluginsManager *plugins;
-    GtkBuilder *builder;
-    GOptionContext *ctx;
-    GOptionGroup *gst_option_group;
-    GError *error = NULL;
-    
-    gchar **filenames = NULL;
-    gboolean new_instance = FALSE;
-    gboolean version = FALSE;
-    gboolean play = FALSE;
-    gboolean stop = FALSE;
-    gboolean next_track = FALSE;
-    gboolean prev_track = FALSE;
-    gboolean seek_f = FALSE;
-    gboolean seek_b = FALSE;
-    gboolean raise_volume = FALSE;
-    gboolean lower_volume = FALSE;
-    gboolean mute = FALSE;
-    gboolean no_plugins = FALSE;
-    gchar    *client_id = NULL;
-    
-    GOptionEntry option_entries[] = 
-    {
-	{ "new-instance", 'i', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, &new_instance, N_("Open a new instance"), NULL },
-	{ "no-plugins", 'n', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, &no_plugins, N_("Do not load plugins"), NULL },
-	{ "play", 'p', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, &play, N_("Play or pause if already playing"), NULL },
-	{ "stop", 's', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, &stop, N_("Stop playing"), NULL },
-	{ "next-track", 'N', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, &next_track, N_("Next track"), NULL },
-	{ "previous-track", 'P', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, &prev_track, N_("Previous track"), NULL },
-	{ "seek-f", 'f', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, &seek_f, N_("Seek forward"), NULL },
-	{ "seek-b", 'b', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, &seek_b, N_("Seek Backward"), NULL },
-	{ "raise-volume", 'r', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, &raise_volume, N_("Raise volume"), NULL },
-	{ "lower-volume", 'l', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, &lower_volume, N_("Lower volume"), NULL },
-	{ "mute", 'm', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, &mute, N_("Mute volume"), NULL },
-	{ "version", 'V', G_OPTION_FLAG_IN_MAIN, G_OPTION_ARG_NONE, &version, N_("Version information"), NULL },
-	{ "sm-client-id", 0, G_OPTION_FLAG_HIDDEN, G_OPTION_ARG_STRING, &client_id, NULL, NULL },
-	{G_OPTION_REMAINING, '\0', 0, G_OPTION_ARG_FILENAME_ARRAY, &filenames, N_("Media to play"), NULL},
-        { NULL, },
-    };
-    
-    if ( !g_thread_supported () )
-	g_thread_init (NULL);
-
-    xfce_textdomain (GETTEXT_PACKAGE, LOCALEDIR, "UTF-8");
-    
-    g_set_application_name (PACKAGE_NAME);
-    
-    gtk_init (&argc, &argv);
-    
-    ctx = g_option_context_new (NULL);
-    
-    gst_option_group = gst_init_get_option_group ();
-    g_option_context_add_main_entries (ctx, option_entries, GETTEXT_PACKAGE);
-    g_option_context_set_translation_domain (ctx, GETTEXT_PACKAGE);
-    g_option_context_add_group (ctx, gst_option_group);
-
-    g_option_context_add_group (ctx, gtk_get_option_group (TRUE));
-    
-    if ( !g_option_context_parse (ctx, &argc, &argv, &error) ) 
-    {
-	g_print ("%s\n", error->message);
-	g_print ("Type %s --help to list all available command line options", argv[0]);
-	g_error_free (error);
-	g_option_context_free (ctx);
-	return EXIT_FAILURE;
-    }
-    g_option_context_free (ctx);
-    
-    if ( version )
-	show_version ();
-	
-    if ( !new_instance && parole_dbus_name_has_owner (PAROLE_DBUS_NAME) )
-    {
-	g_print (_("Parole is already running, use -i to open a new instance\n"));
-	
-	if ( filenames && filenames[0] != NULL )
-	    parole_send (filenames);
-	
-	if ( play )
-	    parole_send_message ("Play");
-	    
-	if ( stop )
-	    parole_send_message ("Stop");
-	    
-	if ( next_track )
-	    parole_send_message ("NextTrack");
-	
-	if ( prev_track )
-	    parole_send_message ("PrevTrack");
-	    
-	if ( seek_f )
-	    parole_send_message ("SeekForward");
-	    
-	if ( seek_b )
-	    parole_send_message ("SeekBackward");
-	    
-	if ( raise_volume )
-	    parole_send_message ("RaiseVolume");
-	    
-	if ( lower_volume )
-	    parole_send_message ("LowerVolume");
-	    
-	if ( mute )
-	    parole_send_message ("Mute");
-    }
-    else
-    {
-	builder = parole_builder_get_main_interface ();
-	parole_dbus_register_name (PAROLE_DBUS_NAME);
-	session = parole_session_get ();
-	
-	if ( client_id )
-	    parole_session_set_client_id (session, client_id);
-	    
-	parole_session_real_init (session);
-	player = parole_player_new ();
-
-	if ( filenames && filenames[0] != NULL )
-	{
-	    if ( g_strv_length (filenames) == 1 && parole_is_uri_disc (filenames[0]))
-	    {
-		parole_player_play_uri_disc (player, filenames[0]);
-	    }
-	    else
-	    {
-		ParoleMediaList *list;
-		list = parole_player_get_media_list (player);
-		parole_media_list_add_files (list, filenames);
-	    }
-	}
-	
-	if ( xfce_posix_signal_handler_init (&error)) 
-	{
-	    xfce_posix_signal_handler_set_handler(SIGHUP,
-						  parole_sig_handler,
-						  player, NULL);
-
-	    xfce_posix_signal_handler_set_handler(SIGINT,
-						  parole_sig_handler,
-						  player, NULL);
-
-	    xfce_posix_signal_handler_set_handler(SIGTERM,
-						  parole_sig_handler,
-						  player, NULL);
-	} 
-	else 
-	{
-	    g_warning ("Unable to set up POSIX signal handlers: %s", error->message);
-	    g_error_free (error);
-	}
-
-	plugins = parole_plugins_manager_get (!no_plugins);
-	parole_plugins_manager_load_plugins (plugins);
-	g_object_unref (builder);
-	
-	gdk_notify_startup_complete ();
-	gtk_main ();
-	
-	parole_dbus_release_name (PAROLE_DBUS_NAME);
-	g_object_unref (plugins);
-	g_object_unref (session);
-    }
-
-    gst_deinit ();
-    return 0;
-}
diff --git a/parole/org.parole.media.list.xml b/parole/org.parole.media.list.xml
deleted file mode 100644
index 5f01a1d..0000000
--- a/parole/org.parole.media.list.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<node name="/">
-    <interface name="org.Parole.Media.List">
-        <annotation name="org.freedesktop.DBus.GLib.CSymbol"
-                    value="parole_media_list_dbus"/>
-        <annotation name="org.freedesktop.DBus.GLib.ClientCSymbol"
-                    value="parole_media_list_dbus_client"/>
-
-    <method name="AddFiles">
-      <arg type="as" name="files" direction="in"/>
-    </method>
-
-    <method name="AddDisc">
-	<arg type="s" name="uri" direction="in"/>
-    </method>
-
-    </interface>
-</node>
diff --git a/parole/org.parole.media.player.xml b/parole/org.parole.media.player.xml
deleted file mode 100644
index 0973af0..0000000
--- a/parole/org.parole.media.player.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<node name="/">
-    <interface name="org.Parole.Media.Player">
-        <annotation name="org.freedesktop.DBus.GLib.CSymbol"
-                    value="parole_player_dbus"/>
-        <annotation name="org.freedesktop.DBus.GLib.ClientCSymbol"
-                    value="parole_player_dbus_client"/>
-
-    <method name="Play">
-    </method>
-
-    <method name="Stop">
-    </method>
-
-    <method name="NextTrack">
-    </method>
-
-    <method name="PrevTrack">
-    </method>
-    
-    <method name="SeekForward">
-    </method>
-
-    <method name="SeekBackward">
-    </method>
-    
-    <method name="RaiseVolume">
-    </method>
-    
-    <method name="LowerVolume">
-    </method>
-    
-    <method name="Mute">
-    </method>
-
-    </interface>
-</node>
diff --git a/parole/parole-about.c b/parole/parole-about.c
deleted file mode 100644
index 9de0a88..0000000
--- a/parole/parole-about.c
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <libxfce4util/libxfce4util.h>
-#include <libxfcegui4/libxfcegui4.h>
-
-#include "parole-about.h"
-#include "parole-utils.h"
-
-void  parole_about (void)
-{
-    XfceAboutInfo *info;
-    GtkWidget *dialog;
-    gint x, y;
-    GdkPixbuf *icon;
-    guint n;
-
-    static const struct
-    {
-	gchar *name, *email, *language;
-    } 	
-    translators[] = 
-    {
-	{"", "", "",},
-    };
-
-    info = xfce_about_info_new ("Parole", VERSION, _("Parole Media Player"),
-                                XFCE_COPYRIGHT_TEXT ("2009", "Ali Abdallah"), 
-				XFCE_LICENSE_GPL);
-
-    xfce_about_info_set_homepage (info, "http://goodies.xfce.org/projects/applications/parole");
-    xfce_about_info_add_credit (info, "Ali Abdallah", "aliov at xfce.org", _("Author/Maintainer"));
-  
-
-    for (n = 0; n < G_N_ELEMENTS (translators); ++n) 
-    {
-	gchar *s;
-	s = g_strdup_printf (_("Translator (%s)"), translators[n].language);
-	xfce_about_info_add_credit (info, translators[n].name, translators[n].email, s);
-	g_free (s);
-    }
-
-    gtk_icon_size_lookup (GTK_ICON_SIZE_DIALOG, &x, &y);
-    icon = parole_icon_load ("parole", x);
-    
-    dialog = xfce_about_dialog_new_with_values (NULL, info, icon);
-    
-	
-    gtk_dialog_run (GTK_DIALOG (dialog));
-    gtk_widget_destroy (dialog);
-
-    xfce_about_info_free (info);
-    
-    if (icon)
-	g_object_unref (G_OBJECT (icon));
-}
diff --git a/parole/parole-about.h b/parole/parole-about.h
deleted file mode 100644
index cb89c42..0000000
--- a/parole/parole-about.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#ifndef __PAROLE_ABOUT_H
-#define __PAROLE_ABOUT_H
-
-#include <gtk/gtk.h>
-
-void 		parole_about	(void);
-
-
-#endif /* __PAROLE_ABOUT_H */
diff --git a/parole/parole-builder.c b/parole/parole-builder.c
deleted file mode 100644
index f3330bf..0000000
--- a/parole/parole-builder.c
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <libxfce4util/libxfce4util.h>
-
-#include "interfaces/parole_ui.h"
-#include "parole-builder.h"
-
-GtkBuilder *
-parole_builder_get_main_interface (void)
-{
-    static gpointer parole_builder_object = NULL;
-    
-    if ( G_LIKELY (parole_builder_object != NULL) )
-    {
-	g_object_ref (parole_builder_object);
-    }
-    else
-    {
-	parole_builder_object = parole_builder_new_from_string (parole_ui, parole_ui_length);
-	g_object_add_weak_pointer (parole_builder_object, &parole_builder_object);
-    }
-    
-    return GTK_BUILDER (parole_builder_object);
-}
-
-GtkBuilder *parole_builder_new_from_string (const gchar *ui, gsize length)
-{
-    GError *error = NULL;
-    GtkBuilder *builder;
-    
-    builder = gtk_builder_new ();
-
-    /*
-     * Set the locale before loading the GtkBuilder interface definition
-     */
-    xfce_textdomain (GETTEXT_PACKAGE, LOCALEDIR, "UTF-8");
-    
-    gtk_builder_add_from_string (builder, ui, length, &error);
-    
-    if ( error )
-    {
-	g_critical ("%s", error->message);
-	g_error_free (error);
-    }
-    
-    return builder;
-}
diff --git a/parole/parole-builder.h b/parole/parole-builder.h
deleted file mode 100644
index 3f0cbf0..0000000
--- a/parole/parole-builder.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#ifndef __PAROLE_BUILDER_H
-#define __PAROLE_BUILDER_H
-
-#include <glib-object.h>
-#include <gtk/gtk.h>
-
-G_BEGIN_DECLS
-
-GtkBuilder       	       *parole_builder_get_main_interface       (void);
-
-GtkBuilder		       *parole_builder_new_from_string 		(const gchar *ui,
-									 gsize length);
-
-G_END_DECLS
-
-#endif /* __PAROLE_BUILDER_H */
diff --git a/parole/parole-button.c b/parole/parole-button.c
deleted file mode 100644
index 29841ea..0000000
--- a/parole/parole-button.c
+++ /dev/null
@@ -1,249 +0,0 @@
-/*
- * * Copyright (C) 2008-2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-
-/*
- * Based on code from gpm-button (gnome power manager)
- * Copyright (C) 2006-2007 Richard Hughes <richard at hughsie.com>
- * 
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#ifdef HAVE_XF86_KEYSYM
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <X11/X.h>
-#include <X11/XF86keysym.h>
-
-#include <gdk/gdkx.h>
-#include <gtk/gtk.h>
-
-#include <glib.h>
-
-#include <libxfce4util/libxfce4util.h>
-
-#include "parole-button.h"
-#include "parole-debug.h"
-#include "enum-gtypes.h"
-
-static void parole_button_finalize   (GObject *object);
-
-#define PAROLE_BUTTON_GET_PRIVATE(o) \
-(G_TYPE_INSTANCE_GET_PRIVATE((o), PAROLE_TYPE_BUTTON, ParoleButtonPrivate))
-
-static struct
-{
-    ParoleButtonKey    key;
-    guint              key_code;
-} parole_key_map [PAROLE_KEY_NUMBERS] = { {0, 0}, };
-
-struct ParoleButtonPrivate
-{
-    GdkScreen	*screen;
-    GdkWindow   *window;
-    
-};
-
-enum
-{
-    BUTTON_PRESSED,
-    LAST_SIGNAL
-};
-
-#define DUPLICATE_SHUTDOWN_TIMEOUT 4.0f
-
-static guint signals[LAST_SIGNAL] = { 0 };
-
-G_DEFINE_TYPE(ParoleButton, parole_button, G_TYPE_OBJECT)
-
-static guint
-parole_button_get_key (unsigned int keycode)
-{
-    ParoleButtonKey key = PAROLE_KEY_UNKNOWN;
-    
-    guint i;
-    
-    for ( i = 0; i < G_N_ELEMENTS (parole_key_map); i++)
-    {
-	if ( parole_key_map [i].key_code == keycode )
-	    key = parole_key_map [i].key;
-    }
-    
-    return key;
-}
-
-static GdkFilterReturn
-parole_button_filter_x_events (GdkXEvent *xevent, GdkEvent *ev, gpointer data)
-{
-    ParoleButtonKey key;
-    ParoleButton *button;
-    
-    XEvent *xev = (XEvent *) xevent;
-    
-    if ( xev->type != KeyPress )
-    	return GDK_FILTER_CONTINUE;
-    
-    key = parole_button_get_key (xev->xkey.keycode);
-    
-    if ( key != PAROLE_KEY_UNKNOWN )
-    {
-	button = (ParoleButton *) data;
-    
-	PAROLE_DEBUG_ENUM ("Key press", key, ENUM_GTYPE_BUTTON_KEY);
-    
-	g_signal_emit (G_OBJECT(button), signals[BUTTON_PRESSED], 0, key);
-	return GDK_FILTER_REMOVE;
-    }
-    
-    return GDK_FILTER_CONTINUE;
-}
-
-static gboolean
-parole_button_grab_keystring (ParoleButton *button, guint keycode)
-{
-    Display *display;
-    guint ret;
-    guint modmask = 0;
-    
-    display = GDK_DISPLAY ();
-    
-    gdk_error_trap_push ();
-
-    ret = XGrabKey (display, keycode, modmask,
-		    GDK_WINDOW_XID (button->priv->window), True,
-		    GrabModeAsync, GrabModeAsync);
-		    
-    if ( ret == BadAccess )
-    {
-	g_warning ("Failed to grab modmask=%u, keycode=%li",
-		    modmask, (long int) keycode);
-	return FALSE;
-    }
-	
-    ret = XGrabKey (display, keycode, LockMask | modmask,
-		    GDK_WINDOW_XID (button->priv->window), True,
-		    GrabModeAsync, GrabModeAsync);
-			
-    if (ret == BadAccess)
-    {
-	g_warning ("Failed to grab modmask=%u, keycode=%li",
-		   LockMask | modmask, (long int) keycode);
-	return FALSE;
-    }
-
-    gdk_flush ();
-    gdk_error_trap_pop ();
-    return TRUE;
-}
-
-
-static gboolean
-parole_button_xevent_key (ParoleButton *button, guint keysym , ParoleButtonKey key)
-{
-    guint keycode = XKeysymToKeycode (GDK_DISPLAY(), keysym);
-
-    if ( keycode == 0 )
-    {
-	g_warning ("could not map keysym %x to keycode\n", keysym);
-	return FALSE;
-    }
-    
-    if ( !parole_button_grab_keystring(button, keycode)) 
-    {
-    	g_warning ("Failed to grab %i\n", keycode);
-	return FALSE;
-    }
-    
-    PAROLE_DEBUG_ENUM_FULL (key, ENUM_GTYPE_BUTTON_KEY, "Grabbed key %li ", (long int) keycode);
-    
-    parole_key_map [key].key_code = keycode;
-    parole_key_map [key].key = key;
-    
-    return TRUE;
-}
-
-static void
-parole_button_setup (ParoleButton *button)
-{
-    button->priv->screen = gdk_screen_get_default ();
-    button->priv->window = gdk_screen_get_root_window (button->priv->screen);
-    
-    parole_button_xevent_key (button, XF86XK_AudioPlay, PAROLE_KEY_AUDIO_PLAY);
-    parole_button_xevent_key (button, XF86XK_AudioStop, PAROLE_KEY_AUDIO_STOP);
-    parole_button_xevent_key (button, XF86XK_AudioPrev, PAROLE_KEY_AUDIO_PREV);
-    parole_button_xevent_key (button, XF86XK_AudioNext, PAROLE_KEY_AUDIO_NEXT);
-
-    gdk_window_add_filter (button->priv->window, 
-			   parole_button_filter_x_events, button);
-}
-
-static void
-parole_button_class_init(ParoleButtonClass *klass)
-{
-    GObjectClass *object_class = G_OBJECT_CLASS(klass);
-
-    signals [BUTTON_PRESSED] = 
-        g_signal_new ("button-pressed",
-                      PAROLE_TYPE_BUTTON,
-                      G_SIGNAL_RUN_LAST,
-                      G_STRUCT_OFFSET (ParoleButtonClass, button_pressed),
-                      NULL, NULL,
-                      g_cclosure_marshal_VOID__ENUM,
-                      G_TYPE_NONE, 1, ENUM_GTYPE_BUTTON_KEY);
-
-    object_class->finalize = parole_button_finalize;
-
-    g_type_class_add_private (klass, sizeof (ParoleButtonPrivate));
-}
-
-static void
-parole_button_init (ParoleButton *button)
-{
-    button->priv = PAROLE_BUTTON_GET_PRIVATE (button);
-    
-    button->priv->screen = NULL;
-    button->priv->window = NULL;
-    
-    parole_button_setup (button);
-}
-
-static void
-parole_button_finalize (GObject *object)
-{
-    G_OBJECT_CLASS(parole_button_parent_class)->finalize(object);
-}
-
-ParoleButton *
-parole_button_new (void)
-{
-    ParoleButton *button = NULL;
-    
-    button = g_object_new (PAROLE_TYPE_BUTTON, NULL);
-    
-    return button;
-}
-
-#endif /*HAVE_XF86_KEYSYM*/
diff --git a/parole/parole-button.h b/parole/parole-button.h
deleted file mode 100644
index 3eca4a0..0000000
--- a/parole/parole-button.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * * Copyright (C) 2008-2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#ifndef __PAROLE_BUTTON_H
-#define __PAROLE_BUTTON_H
-
-#include <glib-object.h>
-
-typedef enum
-{
-    PAROLE_KEY_UNKNOWN,
-    PAROLE_KEY_AUDIO_PLAY,
-    PAROLE_KEY_AUDIO_STOP,
-    PAROLE_KEY_AUDIO_PREV,
-    PAROLE_KEY_AUDIO_NEXT,
-    PAROLE_KEY_NUMBERS,
-    
-} ParoleButtonKey;
-
-#ifdef HAVE_XF86_KEYSYM
-
-G_BEGIN_DECLS
-
-#define PAROLE_TYPE_BUTTON   (parole_button_get_type () )
-#define PAROLE_BUTTON(o)     (G_TYPE_CHECK_INSTANCE_CAST((o), PAROLE_TYPE_BUTTON, ParoleButton))
-#define PAROLE_IS_BUTTON(o)  (G_TYPE_CHECK_INSTANCE_TYPE((o), PAROLE_TYPE_BUTTON))
-
-typedef struct ParoleButtonPrivate ParoleButtonPrivate;
-
-typedef struct
-{
-    GObject		  	parent;
-    ParoleButtonPrivate        *priv;
-    
-} ParoleButton;
-
-typedef struct
-{
-    GObjectClass 		parent_class;
-     
-    void                 	(*button_pressed)		        (ParoleButton *button,
-								         ParoleButtonKey type);
-    
-} ParoleButtonClass;
-
-GType                 		parole_button_get_type               	(void) G_GNUC_CONST;
-
-ParoleButton       	       *parole_button_new             		(void);
-
-G_END_DECLS
-
-#endif /*HAVE_XF86_KEYSYM*/
-
-#endif /* __PAROLE_BUTTON_H */
diff --git a/parole/parole-conf-dialog.c b/parole/parole-conf-dialog.c
deleted file mode 100644
index e6db9b6..0000000
--- a/parole/parole-conf-dialog.c
+++ /dev/null
@@ -1,407 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "interfaces/parole-settings_ui.h"
-
-#include "parole-gst.h"
-#include "parole-builder.h"
-#include "parole-conf-dialog.h"
-#include "parole-conf.h"
-#include "parole-vis.h"
-#include "parole-subtitle-encoding.h"
-
-/*
- * GtkBuilder Callbacks
- */
-
-void		parole_conf_dialog_response_cb		 	(GtkDialog *dialog, 
-								 gint response_id, 
-								 ParoleConfDialog *self);
-							  
-void		parole_conf_dialog_enable_vis_changed_cb 	(GtkToggleButton *widget,
-								 ParoleConfDialog *self);
-
-void		parole_conf_dialog_vis_plugin_changed_cb 	(GtkComboBox *widget,
-								 ParoleConfDialog *self);
-
-void		parole_conf_dialog_font_set_cb		 	(GtkFontButton *button,
-								 ParoleConfDialog *self);
-
-void		parole_conf_dialog_enable_subtitle_changed_cb 	(GtkToggleButton *widget,
-							         ParoleConfDialog *self);
-	
-void		parole_conf_dialog_subtitle_encoding_changed_cb (GtkComboBox *widget,
-								 ParoleConfDialog *self);
-
-void		brightness_value_changed_cb			(GtkRange *range,
-								 ParoleConfDialog *self);
-
-void		contrast_value_changed_cb			(GtkRange *range,
-								 ParoleConfDialog *self);
-
-void		hue_value_changed_cb				(GtkRange *range,
-								 ParoleConfDialog *self);
-
-void		saturation_value_changed_cb			(GtkRange *range,
-								 ParoleConfDialog *self);
-
-void 	        reset_color_clicked_cb 			        (GtkButton *button, 
-								 ParoleConfDialog *self);
-/*
- * End of GtkBuilder callbacks
- */
-
-#define PAROLE_CONF_DIALOG_GET_PRIVATE(o) \
-(G_TYPE_INSTANCE_GET_PRIVATE ((o), PAROLE_TYPE_CONF_DIALOG, ParoleConfDialogPrivate))
-
-struct ParoleConfDialogPrivate
-{
-    ParoleConf *conf;
-    
-    GHashTable *vis_plugins;
-    
-    GtkWidget  *vis_combox;
-    GtkWidget  *toggle_vis;
-    GtkWidget  *toggle_subtitle;
-    GtkWidget  *font_button;
-    GtkWidget  *encoding;
-    GtkWidget  *brightness;
-    GtkWidget  *contrast;
-    GtkWidget  *hue;
-    GtkWidget  *saturation;
-};
-
-G_DEFINE_TYPE (ParoleConfDialog, parole_conf_dialog, G_TYPE_OBJECT)
-
-static void 
-parole_conf_dialog_destroy (GtkWidget *widget, ParoleConfDialog *self)
-{
-    gtk_widget_destroy (widget);
-    g_object_unref (self);
-}
-
-void reset_color_clicked_cb (GtkButton *button, ParoleConfDialog *self)
-{
-    gtk_range_set_value (GTK_RANGE (self->priv->brightness), 0);
-    gtk_range_set_value (GTK_RANGE (self->priv->contrast), 0);
-    gtk_range_set_value (GTK_RANGE (self->priv->hue), 0);
-    gtk_range_set_value (GTK_RANGE (self->priv->saturation), 0);
-    
-}
-
-void parole_conf_dialog_response_cb (GtkDialog *dialog, gint response_id, ParoleConfDialog *self)
-{
-    switch (response_id)
-    {
-	case GTK_RESPONSE_HELP:
-	    break;
-	default:
-	    parole_conf_dialog_destroy (GTK_WIDGET (dialog), self);
-	    break;
-    }
-}
-
-void parole_conf_dialog_subtitle_encoding_changed_cb (GtkComboBox *widget, ParoleConfDialog *self)
-{
-    g_object_set (G_OBJECT (self->priv->conf), 
-		  "subtitle-encoding", parole_subtitle_encoding_get_selected (widget),
-		  NULL);
-}
-
-void parole_conf_dialog_enable_vis_changed_cb (GtkToggleButton *widget, ParoleConfDialog *self)
-{
-    gboolean active;
-    
-    active = gtk_toggle_button_get_active (widget);
-    
-    g_object_set (G_OBJECT (self->priv->conf),
-		  "vis-enabled", active,
-		  NULL);
-    
-    gtk_widget_set_sensitive (self->priv->vis_combox, active);
-}
-
-static void
-set_effect_value (ParoleConfDialog *self, GtkRange *range, const gchar *name)
-{
-    gint value;
-    
-    value = gtk_range_get_value (range);
-    
-    g_object_set (G_OBJECT (self->priv->conf),	
-		  name, value,
-		  NULL);
-}
-
-void brightness_value_changed_cb (GtkRange *range, ParoleConfDialog *self)
-{
-    set_effect_value (self, range, "brightness");
-}
-
-void contrast_value_changed_cb (GtkRange *range, ParoleConfDialog *self)
-{
-    set_effect_value (self, range, "contrast");
-}
-
-void hue_value_changed_cb (GtkRange *range, ParoleConfDialog *self)
-{
-    set_effect_value (self, range, "hue");
-}
-
-void saturation_value_changed_cb (GtkRange *range, ParoleConfDialog *self)
-{
-    set_effect_value (self, range, "saturation");
-}
-
-void parole_conf_dialog_vis_plugin_changed_cb (GtkComboBox *widget,  ParoleConfDialog *self)
-{
-    gchar *active;
-    GstElementFactory *f;
-    
-    active = gtk_combo_box_get_active_text (widget);
-    
-    f = g_hash_table_lookup (self->priv->vis_plugins, active);
-    
-    if ( f )
-    {
-	g_object_set (G_OBJECT (self->priv->conf),
-		      "vis-name", GST_PLUGIN_FEATURE_NAME (f),
-		      NULL);
-    }
-    
-    g_free (active);
-}
-
-void parole_conf_dialog_font_set_cb (GtkFontButton *button, ParoleConfDialog *self)
-{
-    g_object_set (G_OBJECT (self->priv->conf), 
-		  "subtitle-font", gtk_font_button_get_font_name (button),
-		  NULL);
-}
-
-void parole_conf_dialog_enable_subtitle_changed_cb (GtkToggleButton *widget, ParoleConfDialog *self)
-{
-    gboolean active;
-    
-    active = gtk_toggle_button_get_active (widget);
-    
-    g_object_set (G_OBJECT (self->priv->conf),
-		  "enable-subtitle", active,
-		  NULL);
-    
-    gtk_widget_set_sensitive (self->priv->font_button, active);
-    
-}
-
-static void
-parole_conf_dialog_finalize (GObject *object)
-{
-    ParoleConfDialog *self;
-
-    self = PAROLE_CONF_DIALOG (object);
-    
-    g_object_unref (self->priv->conf);
-    g_hash_table_destroy (self->priv->vis_plugins);
-
-    G_OBJECT_CLASS (parole_conf_dialog_parent_class)->finalize (object);
-}
-
-static void
-parole_conf_dialog_class_init (ParoleConfDialogClass *klass)
-{
-    GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
-    object_class->finalize = parole_conf_dialog_finalize;
-
-    g_type_class_add_private (klass, sizeof (ParoleConfDialogPrivate));
-}
-
-static void
-parole_conf_dialog_init (ParoleConfDialog *self)
-{
-    self->priv = PAROLE_CONF_DIALOG_GET_PRIVATE (self);
-    self->priv->conf = parole_conf_new ();
-    
-    self->priv->vis_plugins = parole_vis_get_plugins ();
-}
-
-static void
-parole_conf_dialog_add_vis_plugins (gpointer key, gpointer value, GtkWidget *combox)
-{
-    gtk_combo_box_append_text (GTK_COMBO_BOX (combox), (const gchar *) key);
-}
-
-static gboolean 
-parole_conf_dialog_set_default_vis_plugin (GtkTreeModel *model, GtkTreePath *path,
-					   GtkTreeIter *iter, ParoleConfDialog *self)
-{
-    GstElementFactory *f;
-    gchar *vis_name;
-    gchar *combox_text;
-    gboolean ret = FALSE;
-    
-    g_object_get (G_OBJECT (self->priv->conf),
-		  "vis-name", &vis_name,
-		  NULL);
-
-    gtk_tree_model_get (model, iter, 
-			0, &combox_text,
-			-1);
-
-    f = g_hash_table_lookup (self->priv->vis_plugins, combox_text);
-    
-    if ( !g_strcmp0 (vis_name, "none") )
-    {
-	if ( !g_strcmp0 (GST_PLUGIN_FEATURE_NAME (f), "Goom") )
-	    ret = TRUE;
-    }
-    else if ( !g_strcmp0 (GST_PLUGIN_FEATURE_NAME (f), vis_name) )
-    {
-	ret = TRUE;
-    }
-    
-    if ( ret == TRUE )
-	gtk_combo_box_set_active_iter (GTK_COMBO_BOX (self->priv->vis_combox), iter);
-    
-    return ret;
-}
-
-static void
-parole_conf_dialog_set_defaults (ParoleConfDialog *self)
-{
-    GtkTreeModel *model;
-    gboolean vis_enabled;
-    gboolean subtitle;
-    gchar *subtitle_font;
-    gchar *subtitle_encoding;
-    
-    g_object_get (G_OBJECT (self->priv->conf),
-		  "vis-enabled", &vis_enabled,
-		  "enable-subtitle", &subtitle,
-		  "subtitle-font", &subtitle_font,
-		  "subtitle-encoding", &subtitle_encoding,
-		  NULL);
-
-    gtk_widget_set_sensitive (self->priv->vis_combox, vis_enabled);
-    gtk_widget_set_sensitive (self->priv->font_button, subtitle);
-    
-    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (self->priv->toggle_vis), vis_enabled);
-    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (self->priv->toggle_subtitle), subtitle);
-    
-    model = gtk_combo_box_get_model (GTK_COMBO_BOX (self->priv->vis_combox));
-
-    gtk_tree_model_foreach (model, 
-			    (GtkTreeModelForeachFunc) parole_conf_dialog_set_default_vis_plugin,
-			    self);
-			    
-    parole_subtitle_encoding_set (GTK_COMBO_BOX (self->priv->encoding), subtitle_encoding);
-    
-    gtk_font_button_set_font_name (GTK_FONT_BUTTON (self->priv->font_button), subtitle_font);
-    
-    g_free (subtitle_font);
-    g_free (subtitle_encoding);
-}
-
-ParoleConfDialog *
-parole_conf_dialog_new (void)
-{
-    ParoleConfDialog *parole_conf_dialog = NULL;
-    parole_conf_dialog = g_object_new (PAROLE_TYPE_CONF_DIALOG, NULL);
-    return parole_conf_dialog;
-}
-
-void parole_conf_dialog_open (ParoleConfDialog *self, GtkWidget *parent)
-{
-    GtkBuilder *builder;
-    GtkWidget  *dialog;
-    GtkWidget  *combox;
-    gboolean    with_display;
-    
-    builder = parole_builder_new_from_string (parole_settings_ui, parole_settings_ui_length);
-    
-    dialog = GTK_WIDGET (gtk_builder_get_object (builder, "settings-dialog"));
-    combox = GTK_WIDGET (gtk_builder_get_object (builder, "vis-combobox"));
-    
-    self->priv->toggle_vis = GTK_WIDGET (gtk_builder_get_object (builder, "enable-vis"));
-    self->priv->toggle_subtitle = GTK_WIDGET (gtk_builder_get_object (builder, "enable-subtitle"));
-    self->priv->font_button = GTK_WIDGET (gtk_builder_get_object (builder, "fontbutton"));
-    self->priv->encoding = GTK_WIDGET (gtk_builder_get_object (builder, "encoding"));
-    
-    parole_subtitle_encoding_init (GTK_COMBO_BOX (self->priv->encoding));
-    
-    g_hash_table_foreach (self->priv->vis_plugins, (GHFunc) parole_conf_dialog_add_vis_plugins, combox);
-    
-    gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (parent));
-    
-    self->priv->vis_combox = combox;
-
-    parole_conf_dialog_set_defaults (self);
-    
-    with_display = parole_gst_get_is_xvimage_sink (PAROLE_GST (parole_gst_get ()));
-    
-    if ( !with_display )
-    {
-	gtk_widget_hide (GTK_WIDGET (gtk_builder_get_object (builder, "frame-display")));
-    }
-    else
-    {
-	gint brightness_value;
-	gint contrast_value;
-	gint hue_value;
-	gint saturation_value;
-	
-	self->priv->brightness = GTK_WIDGET (gtk_builder_get_object (builder, "brightness"));
-	self->priv->contrast = GTK_WIDGET (gtk_builder_get_object (builder, "contrast"));
-	self->priv->hue = GTK_WIDGET (gtk_builder_get_object (builder, "hue"));
-	self->priv->saturation = GTK_WIDGET (gtk_builder_get_object (builder, "saturation"));
-	
-	gtk_range_set_range (GTK_RANGE (self->priv->brightness), -1000, 1000);
-	gtk_range_set_range (GTK_RANGE (self->priv->contrast), -1000, 1000);
-	gtk_range_set_range (GTK_RANGE (self->priv->saturation), -1000, 1000);
-	gtk_range_set_range (GTK_RANGE (self->priv->hue), -1000, 1000);
-
-	g_object_get (G_OBJECT (self->priv->conf),
-		      "brightness", &brightness_value,
-		      "contrast", &contrast_value,
-		      "hue", &hue_value,
-		      "saturation", &saturation_value,
-		      NULL);
-	
-	gtk_range_set_value (GTK_RANGE (self->priv->brightness), brightness_value);
-	gtk_range_set_value (GTK_RANGE (self->priv->contrast), contrast_value);
-	gtk_range_set_value (GTK_RANGE (self->priv->hue), hue_value);
-	gtk_range_set_value (GTK_RANGE (self->priv->saturation), saturation_value);
-	
-    }
-    
-    gtk_builder_connect_signals (builder, self);
-    
-    g_object_unref (builder);
-    
-    gtk_widget_show (dialog);
-}
diff --git a/parole/parole-conf-dialog.h b/parole/parole-conf-dialog.h
deleted file mode 100644
index 967008f..0000000
--- a/parole/parole-conf-dialog.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#ifndef __PAROLE_CONF_DIALOG_H
-#define __PAROLE_CONF_DIALOG_H
-
-#include <glib-object.h>
-#include <gtk/gtk.h>
-
-G_BEGIN_DECLS
-
-#define PAROLE_TYPE_CONF_DIALOG        (parole_conf_dialog_get_type () )
-#define PAROLE_CONF_DIALOG(o)          (G_TYPE_CHECK_INSTANCE_CAST ((o), PAROLE_TYPE_CONF_DIALOG, ParoleConfDialog))
-#define PAROLE_IS_CONF_DIALOG(o)       (G_TYPE_CHECK_INSTANCE_TYPE ((o), PAROLE_TYPE_CONF_DIALOG))
-
-typedef struct ParoleConfDialogPrivate ParoleConfDialogPrivate;
-
-typedef struct
-{
-    GObject         		 parent;
-    ParoleConfDialogPrivate     *priv;
-    
-} ParoleConfDialog;
-
-typedef struct
-{
-    GObjectClass 		 parent_class;
-    
-} ParoleConfDialogClass;
-
-GType        			 parole_conf_dialog_get_type        (void) G_GNUC_CONST;
-ParoleConfDialog       		*parole_conf_dialog_new             (void);
-
-void				 parole_conf_dialog_open	    (ParoleConfDialog *self,
-								     GtkWidget *parent);
-
-G_END_DECLS
-
-#endif /* __PAROLE_CONF_DIALOG_H */
diff --git a/parole/parole-conf.c b/parole/parole-conf.c
deleted file mode 100644
index 21136c4..0000000
--- a/parole/parole-conf.c
+++ /dev/null
@@ -1,409 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <glib.h>
-
-#include "parole-conf.h"
-#include "parole-rc-utils.h"
-#include "enum-gtypes.h"
-
-#include "gst/parole-gst.h"
-#include "gst/gst-enum-types.h"
-
-#define PAROLE_CONF_GET_PRIVATE(o) \
-(G_TYPE_INSTANCE_GET_PRIVATE ((o), PAROLE_TYPE_CONF, ParoleConfPrivate))
-
-struct ParoleConfPrivate
-{
-    GValue      *values;
-};
-
-static gpointer parole_conf_object = NULL;
-
-G_DEFINE_TYPE (ParoleConf, parole_conf, G_TYPE_OBJECT)
-
-enum
-{
-    PROP_0,
-    PROP_VIS_ENABLED,
-    PROP_VIS_NAME,
-    PROP_SUBTITLE_ENABLED,
-    PROP_SUBTITLE_FONT,
-    PROP_SUBTITLE_ENCODING,
-    PROP_REPEAT,
-    PROP_SHUFFLE,
-    PROP_BRIGHTNESS,
-    PROP_CONTRAST,
-    PROP_HUE,
-    PROP_SATURATION,
-    PROP_ASPECT_RATIO,
-    PROP_WINDOW_WIDTH,
-    PROP_WINDOW_HEIGHT,
-    N_PROP
-};
-
-static void parole_conf_set_property (GObject *object,
-				      guint prop_id,
-				      const GValue *value,
-				      GParamSpec *pspec)
-{
-    ParoleConf *conf;
-    GValue *dst;
-    GValue save_dst = { 0, };
-     
-    conf = PAROLE_CONF (object);
-   
-    dst = conf->priv->values + prop_id;
-
-    if ( !G_IS_VALUE (dst) )
-    {
-	g_value_init (dst, pspec->value_type);
-	g_param_value_set_default (pspec, dst);
-    }
-
-    if ( g_param_values_cmp (pspec, value, dst) != 0 )
-    {
-	g_value_copy (value, dst);
-	g_object_notify (object, pspec->name);
-	
-	if ( pspec->value_type != G_TYPE_STRING )
-	{
-	    g_value_init (&save_dst, G_TYPE_STRING);
-		
-	    if ( G_LIKELY (g_value_transform (value, &save_dst)) )
-	    {
-		g_object_set_property (G_OBJECT (conf), pspec->name, &save_dst);
-		parole_rc_write_entry_string (pspec->name, PAROLE_RC_GROUP_GENERAL, g_value_get_string (&save_dst));
-	    }
-	    else
-		g_warning ("Unable to save property : %s", pspec->name);
-		
-	    g_value_unset (&save_dst);
-	}
-	else
-	{	
-	    parole_rc_write_entry_string (pspec->name, PAROLE_RC_GROUP_GENERAL, g_value_get_string (value));
-	}
-    }
-}
-
-static void parole_conf_get_property (GObject *object,
-				      guint prop_id,
-				      GValue *value,
-				      GParamSpec *pspec)
-{
-    ParoleConf *conf;
-    GValue *src;
-    
-    conf = PAROLE_CONF (object);
-    
-    src = conf->priv->values + prop_id;
-    
-    if (G_VALUE_HOLDS (src, pspec->value_type))
-    {
-	if (G_LIKELY (pspec->value_type == G_TYPE_STRING))
-	    g_value_set_static_string (value, g_value_get_string (src));
-	else
-	    g_value_copy (src, value);
-    }
-    else
-    {
-	g_param_value_set_default (pspec, value);
-    }
-}
-
-static void
-parole_conf_finalize (GObject *object)
-{
-    ParoleConf *conf;
-    guint i;
-
-    conf = PAROLE_CONF (object);
-    
-    for ( i = 0; i < N_PROP; i++)
-    {
-        if ( G_IS_VALUE (conf->priv->values + i) )
-            g_value_unset (conf->priv->values + i);
-    }
-    
-    g_free (conf->priv->values);
-
-    G_OBJECT_CLASS (parole_conf_parent_class)->finalize (object);
-    
-}
-
-static void
-transform_string_to_boolean (const GValue *src,
-                             GValue       *dst)
-{
-    g_value_set_boolean (dst, !g_strcmp0 (g_value_get_string (src), "TRUE"));
-}
-
-static void
-transform_string_to_int (const GValue *src,
-			 GValue       *dst)
-{
-    g_value_set_int (dst, strtol (g_value_get_string (src), NULL, 10));
-}
-
-static void
-transform_string_to_enum (const GValue *src,
-                          GValue       *dst)
-{
-    GEnumClass *genum_class;
-    GEnumValue *genum_value;
-
-    genum_class = g_type_class_peek (G_VALUE_TYPE (dst));
-    genum_value = g_enum_get_value_by_name (genum_class, g_value_get_string (src));
-    
-    if (G_UNLIKELY (genum_value == NULL))
-	genum_value = genum_class->values;
-    g_value_set_enum (dst, genum_value->value);
-}
-
-static void
-parole_conf_class_init (ParoleConfClass *klass)
-{
-    GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
-    object_class->finalize = parole_conf_finalize;
-
-    object_class->get_property = parole_conf_get_property;
-    object_class->set_property = parole_conf_set_property;
-
-    if (!g_value_type_transformable (G_TYPE_STRING, G_TYPE_INT))
-	g_value_register_transform_func (G_TYPE_STRING, G_TYPE_INT, transform_string_to_int);
-
-    if (!g_value_type_transformable (G_TYPE_STRING, G_TYPE_BOOLEAN))
-	g_value_register_transform_func (G_TYPE_STRING, G_TYPE_BOOLEAN, transform_string_to_boolean);
-    
-    if (!g_value_type_transformable (G_TYPE_STRING, GST_ENUM_TYPE_ASPECT_RATIO))
-	g_value_register_transform_func (G_TYPE_STRING, GST_ENUM_TYPE_ASPECT_RATIO, transform_string_to_enum);
-	
-    g_object_class_install_property (object_class,
-                                     PROP_VIS_ENABLED,
-                                     g_param_spec_boolean ("vis-enabled",
-                                                           NULL, NULL,
-                                                           FALSE,
-                                                           G_PARAM_READWRITE));
-
-    g_object_class_install_property (object_class,
-                                     PROP_VIS_NAME,
-                                     g_param_spec_string  ("vis-name",
-                                                           NULL, NULL,
-                                                           "none",
-                                                           G_PARAM_READWRITE));
-
-    g_object_class_install_property (object_class,
-                                     PROP_SUBTITLE_ENCODING,
-                                     g_param_spec_string  ("subtitle-encoding",
-                                                           NULL, NULL,
-                                                           "UTF-8",
-                                                           G_PARAM_READWRITE));
-
-    g_object_class_install_property (object_class,
-                                     PROP_SUBTITLE_ENABLED,
-                                     g_param_spec_boolean ("enable-subtitle",
-                                                           NULL, NULL,
-                                                           TRUE,
-                                                           G_PARAM_READWRITE));
-							   
-    g_object_class_install_property (object_class,
-                                     PROP_SUBTITLE_FONT,
-                                     g_param_spec_string  ("subtitle-font",
-                                                           NULL, NULL,
-                                                           "Sans 12",
-                                                           G_PARAM_READWRITE));
-    
-    g_object_class_install_property (object_class,
-                                     PROP_REPEAT,
-                                     g_param_spec_boolean ("repeat",
-                                                           NULL, NULL,
-                                                           FALSE,
-                                                           G_PARAM_READWRITE));
-    
-    g_object_class_install_property (object_class,
-                                     PROP_SHUFFLE,
-                                     g_param_spec_boolean ("shuffle",
-                                                           NULL, NULL,
-                                                           FALSE,
-                                                           G_PARAM_READWRITE));
-    
-    
-    g_object_class_install_property (object_class,
-                                     PROP_CONTRAST,
-                                     g_param_spec_int ("contrast",
-                                                       NULL, NULL,
-                                                       -1000,
-						       1000,
-						       0,
-                                                       G_PARAM_READWRITE));
-							   
-    g_object_class_install_property (object_class,
-                                     PROP_HUE,
-                                     g_param_spec_int ("hue",
-                                                       NULL, NULL,
-                                                       -1000,
-						       1000,
-						       0,
-                                                       G_PARAM_READWRITE));
-    g_object_class_install_property (object_class,
-                                     PROP_SATURATION,
-                                     g_param_spec_int ("saturation",
-                                                       NULL, NULL,
-                                                       -1000,
-						       1000,
-						       0,
-                                                       G_PARAM_READWRITE));
-    g_object_class_install_property (object_class,
-                                     PROP_BRIGHTNESS,
-                                     g_param_spec_int ("brightness",
-                                                       NULL, NULL,
-                                                       -1000,
-						       1000,
-						       0,
-                                                       G_PARAM_READWRITE));
-						       
-    g_object_class_install_property (object_class,
-                                     PROP_ASPECT_RATIO,
-                                     g_param_spec_enum ("aspect-ratio",
-                                                        NULL, NULL,
-							GST_ENUM_TYPE_ASPECT_RATIO,
-							PAROLE_ASPECT_RATIO_NONE,
-                                                        G_PARAM_READWRITE));
-						       
-    g_object_class_install_property (object_class,
-                                     PROP_WINDOW_WIDTH,
-                                     g_param_spec_int ("window-width",
-                                                       NULL, NULL,
-                                                       320,
-						       G_MAXINT16,
-						       780,
-                                                       G_PARAM_READWRITE));
-						       
-    g_object_class_install_property (object_class,
-                                     PROP_WINDOW_HEIGHT,
-                                     g_param_spec_int ("window-height",
-                                                       NULL, NULL,
-                                                       220,
-						       G_MAXINT16,
-						       480,
-                                                       G_PARAM_READWRITE));
-						       
-    g_type_class_add_private (klass, sizeof (ParoleConfPrivate));
-}
-
-static void
-parole_conf_load (ParoleConf *conf)
-{
-    XfceRc *rc;
-    const gchar *name;
-    const gchar *str;
-    GParamSpec  **pspecs, *pspec;
-    guint nspecs, i;
-    GValue src = { 0, }, dst = { 0, };
-    
-    rc = parole_get_resource_file (PAROLE_RC_GROUP_GENERAL, TRUE);
-    
-    if ( G_UNLIKELY (rc == NULL ) )
-    {
-	g_warning ("Unable to lookup rc file in : %s\n", PAROLE_RESOURCE_FILE);
-	return;
-    }
-
-    g_object_freeze_notify (G_OBJECT (conf));
-    
-    pspecs = g_object_class_list_properties (G_OBJECT_GET_CLASS (conf), &nspecs);
-
-    g_value_init (&src, G_TYPE_STRING);
-    
-    for ( i = 0; i < nspecs; i++)
-    {
-	pspec = pspecs[i];
-	name = g_param_spec_get_name (pspec);
-	
-	str = xfce_rc_read_entry (rc, pspec->name, NULL);
-	
-	if ( str )
-	{
-	    g_value_set_static_string (&src, str);
-	    
-	    if ( pspec->value_type == G_TYPE_STRING )
-	    {
-		g_object_set_property (G_OBJECT (conf), name, &src);
-	    }
-	    else
-	    {
-		g_value_init (&dst, G_PARAM_SPEC_VALUE_TYPE (pspec));
-		
-		if ( G_LIKELY (g_value_transform (&src, &dst)))
-		{
-		    g_object_set_property (G_OBJECT (conf), name, &dst);
-		}
-		else
-		{
-		    g_warning ("Unable to load property %s", name);
-		}
-		    
-		g_value_unset (&dst);
-	    }
-	}
-    }
-    
-    xfce_rc_close (rc);
-    g_value_unset (&src);
-    g_object_thaw_notify (G_OBJECT (conf));
-    g_free (pspecs);
-}
-
-static void
-parole_conf_init (ParoleConf *conf)
-{
-    conf->priv = PAROLE_CONF_GET_PRIVATE (conf);
-    
-    conf->priv->values = g_new0 (GValue, N_PROP);
-    
-    parole_conf_load (conf);
-    
-}
-
-ParoleConf *
-parole_conf_new (void)
-{
-    if ( parole_conf_object != NULL )
-    {
-	g_object_ref (parole_conf_object);
-    }
-    else
-    {
-	parole_conf_object = g_object_new (PAROLE_TYPE_CONF, NULL);
-	g_object_add_weak_pointer (parole_conf_object, &parole_conf_object);
-    }
-
-    return PAROLE_CONF (parole_conf_object);
-}
diff --git a/parole/parole-conf.h b/parole/parole-conf.h
deleted file mode 100644
index 79910a2..0000000
--- a/parole/parole-conf.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#ifndef __PAROLE_CONF_H
-#define __PAROLE_CONF_H
-
-#include <glib-object.h>
-
-G_BEGIN_DECLS
-
-#define PAROLE_TYPE_CONF        (parole_conf_get_type () )
-#define PAROLE_CONF(o)          (G_TYPE_CHECK_INSTANCE_CAST ((o), PAROLE_TYPE_CONF, ParoleConf))
-#define PAROLE_IS_CONF(o)       (G_TYPE_CHECK_INSTANCE_TYPE ((o), PAROLE_TYPE_CONF))
-
-   
-typedef struct ParoleConfPrivate ParoleConfPrivate;
-
-typedef struct
-{
-    GObject         		 parent;
-    ParoleConfPrivate     	*priv;
-    
-} ParoleConf;
-
-typedef struct
-{
-    GObjectClass 		 parent_class;
-    
-} ParoleConfClass;
-
-GType        			 parole_conf_get_type        (void) G_GNUC_CONST;
-
-ParoleConf       		*parole_conf_new             (void);
-
-G_END_DECLS
-
-#endif /* __PAROLE_CONF_H */
diff --git a/parole/parole-debug.c b/parole/parole-debug.c
deleted file mode 100644
index f620793..0000000
--- a/parole/parole-debug.c
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * * Copyright (C) 2008-2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <glib.h>
-#include <glib-object.h>
-#include <glib/gprintf.h>
-#include <stdio.h>
-#include <string.h>
-#include <stdarg.h>
-
-#include "parole-debug.h"
-
-#if defined(DEBUG) && defined(G_HAVE_ISO_VARARGS)
-
-void parole_debug_enum (const gchar *func, const gchar *file, gint line, 
-		        const gchar *text, gint v_enum, GType type)
-{
-    gchar *content = NULL;
-    GValue __value__ = { 0, };
-
-    g_value_init (&__value__, type);
-    g_value_set_enum (&__value__, v_enum);
-    
-    content = g_strdup_value_contents (&__value__);
-    
-    fprintf(stdout, "TRACE[%s:%d] %s(): %s : %s", file, line , func, text, content);
-    fprintf(stdout, "\n");
-    
-    g_value_unset (&__value__);						
-    g_free (content);
-}
-
-void parole_debug_enum_full (const gchar *func, const gchar *file, gint line,
-			     gint v_enum, GType type, const gchar *format, ...)
-{
-    va_list args;
-    gchar *buffer;
-    
-    gchar *content = NULL;
-    GValue __value__ = { 0, };
-    
-    g_value_init (&__value__, type);
-    g_value_set_enum (&__value__, v_enum);
-    
-    content = g_strdup_value_contents (&__value__);
-    
-    va_start (args, format);
-    g_vasprintf (&buffer, format, args);
-    va_end (args);
-	
-    fprintf(stdout, "TRACE[%s:%d] %s(): ", file, line, func);
-    fprintf(stdout, "%s: %s", buffer, content);
-    fprintf(stdout, "\n");
-    
-    g_value_unset (&__value__);	
-    g_free (content);
-    g_free (buffer);
-}
-
-#endif /*#if defined(DEBUG) && defined(G_HAVE_ISO_VARARGS)*/
diff --git a/parole/parole-debug.h b/parole/parole-debug.h
deleted file mode 100644
index 1eb770e..0000000
--- a/parole/parole-debug.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * * Copyright (C) 2008-2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#ifndef __PAROLE_DEBUG_H
-#define __PAROLE_DEBUG_H
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdarg.h>
-#include <glib.h>
-
-G_BEGIN_DECLS
-
-#if defined(DEBUG) && defined(G_HAVE_ISO_VARARGS)
-
-#define PAROLE_DEBUG_ENUM(_text, _value, _type)\
-    parole_debug_enum (__func__, __FILE__, __LINE__, _text, _value, _type)
-
-#define PAROLE_DEBUG_ENUM_FULL(_value, _type, ...)\
-    parole_debug_enum_full (__func__, __FILE__, __LINE__, _value, _type, __VA_ARGS__)
-
-void		parole_debug_enum 	(const gchar *func,
-					 const gchar *file,
-					 gint line,
-					 const gchar *text,
-					 gint v_enum, 
-					 GType type);
-					 
-void		parole_debug_enum_full   (const gchar *func,
-					 const gchar *file,
-					 gint line,
-					 gint v_enum,
-					 GType type,
-					 const gchar *format,
-					 ...) G_GNUC_PRINTF (6, 7);
-
-
-#else
-
-#define PAROLE_DEBUG_ENUM(_text, _value, _type)
-#define PAROLE_DEBUG_ENUM_FULL(_value, _type, ...)
-
-#endif
-
-G_END_DECLS
-
-#endif /* __PAROLE_DEBUG_H */
diff --git a/parole/parole-disc-menu.c b/parole/parole-disc-menu.c
deleted file mode 100644
index 08edb8a..0000000
--- a/parole/parole-disc-menu.c
+++ /dev/null
@@ -1,334 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <libxfce4util/libxfce4util.h>
-
-#include "parole-disc-menu.h"
-#include "parole-builder.h"
-#include "parole-statusbar.h"
-#include "parole-gst.h"
-
-static void parole_disc_menu_finalize   (GObject *object);
-
-#define PAROLE_DISC_MENU_GET_PRIVATE(o) \
-(G_TYPE_INSTANCE_GET_PRIVATE ((o), PAROLE_TYPE_DISC_MENU, ParoleDiscMenuPrivate))
-
-struct ParoleDiscMenuPrivate
-{
-    ParoleGst   *gst;
-    ParoleMediaType current_media_type;
-    
-    GtkWidget	*disc_track;
-    GtkWidget   *disc_box;
-    
-    GtkWidget	*next_chapter;
-    GtkWidget	*prev_chapter;
-    GtkWidget	*dvd_menu;
-    GtkWidget	*chapter_menu;
-    GtkWidget	*info;
-    GtkWidget   *eventboxinfo;
-    
-    guint tracks;
-};
-
-G_DEFINE_TYPE (ParoleDiscMenu, parole_disc_menu, G_TYPE_OBJECT)
-
-static void
-parole_disc_menu_hide (ParoleDiscMenu *menu)
-{
-    gtk_widget_hide (menu->priv->disc_track);
-    gtk_widget_hide (menu->priv->next_chapter);
-    gtk_widget_hide (menu->priv->prev_chapter);
-    gtk_widget_hide (menu->priv->info);
-    gtk_widget_hide (menu->priv->eventboxinfo);
-    gtk_widget_hide (menu->priv->disc_box);
-    //gtk_widget_hide (menu->priv->dvd_menu);
-    //gtk_widget_hide (menu->priv->chapter_menu);
-}
-
-static void
-parole_disc_menu_show (ParoleDiscMenu *menu, gboolean show_label)
-{
-    gtk_widget_show (menu->priv->next_chapter);
-    gtk_widget_show (menu->priv->prev_chapter);
-    
-    if ( show_label )
-    {
-	gtk_widget_show (menu->priv->eventboxinfo);
-	gtk_widget_show (menu->priv->info);
-	gtk_widget_show (menu->priv->disc_track);
-    }
-    
-   //gtk_widget_show (menu->priv->dvd_menu);
-   //gtk_widget_show (menu->priv->dvd_menu);
-   gtk_widget_show (menu->priv->disc_box);
-    
-}
-
-static void
-parole_disc_menu_media_state_cb (ParoleGst *gst, const ParoleStream *stream, 	
-				 ParoleMediaState state, ParoleDiscMenu *menu)
-{
-    ParoleMediaType media_type;
-    menu->priv->tracks = 0;
-    
-    if ( state < PAROLE_MEDIA_STATE_PAUSED )
-    {
-	gtk_label_set_markup (GTK_LABEL (menu->priv->info), NULL);
-	parole_disc_menu_hide (menu);
-    }
-    else if ( state == PAROLE_MEDIA_STATE_PLAYING )
-    {
-	g_object_get (G_OBJECT (stream),
-		      "media-type", &media_type,
-		      NULL);
-	
-	if ( media_type == PAROLE_MEDIA_TYPE_DVD )
-	{
-	    gtk_button_set_label (GTK_BUTTON (menu->priv->next_chapter), _("Next Chapter"));
-	    gtk_button_set_label (GTK_BUTTON (menu->priv->prev_chapter), _("Previous Chapter"));
-	    parole_disc_menu_show (menu, FALSE);
-	}
-	else if ( media_type == PAROLE_MEDIA_TYPE_CDDA )
-	{
-	    guint num_tracks;
-	    guint current;
-	    gchar *text;
-	    gtk_button_set_label (GTK_BUTTON (menu->priv->next_chapter), _("Next Track"));
-	    gtk_button_set_label (GTK_BUTTON (menu->priv->prev_chapter), _("Previous Track"));
-	    
-	    g_object_get (G_OBJECT (stream),
-			  "num-tracks", &num_tracks,
-			  "track", &current,
-			  NULL);
-			  
-	    text = g_strdup_printf ("<span font_desc='sans 8' font_size='xx-large' color='#510DEC'>%s %i/%i</span>", _("Playing Track"), current, num_tracks);
-	    
-	    gtk_label_set_markup (GTK_LABEL (menu->priv->info), text);
-	    
-	    g_free (text);
-	    parole_disc_menu_show (menu, TRUE);
-	    menu->priv->tracks = num_tracks;
-	}
-	menu->priv->current_media_type = media_type;
-    }
-}
-
-static void
-parole_disc_menu_next_chapter_cb (ParoleDiscMenu *menu)
-{
-    if ( menu->priv->current_media_type == PAROLE_MEDIA_TYPE_DVD )
-	parole_gst_next_dvd_chapter (menu->priv->gst);
-    else if ( menu->priv->current_media_type == PAROLE_MEDIA_TYPE_CDDA)
-	parole_gst_next_cdda_track (menu->priv->gst);
-}
-
-static void
-parole_disc_menu_prev_chapter_cb (ParoleDiscMenu *menu)
-{
-    if ( menu->priv->current_media_type == PAROLE_MEDIA_TYPE_DVD )
-	parole_gst_prev_dvd_chapter (menu->priv->gst);
-    else if ( menu->priv->current_media_type == PAROLE_MEDIA_TYPE_CDDA)
-	parole_gst_prev_cdda_track (menu->priv->gst);
-}
-
-static void
-parole_disc_menu_dvd_menu_cb (ParoleDiscMenu *menu)
-{
-    
-}
-
-static void
-parole_disc_menu_chapter_menu_cb (ParoleDiscMenu *menu)
-{
-    
-}
-
-static void
-track_menu_item_activated_cb (GtkWidget *widget, ParoleDiscMenu *menu)
-{
-    guint track;
-    
-    track = GPOINTER_TO_UINT ( g_object_get_data (G_OBJECT (widget), "track"));
-    
-    parole_gst_seek_cdda (menu->priv->gst, track);
-}
-
-static void
-parole_disc_menu_show_disc_track_menu (ParoleDiscMenu *disc_menu, guint button, guint activate_time)
-{
-    GtkWidget *menu, *mi, *img;
-    gchar track[128];
-    guint i;
-    
-    menu = gtk_menu_new ();
-    
-    for ( i = 0; i < disc_menu->priv->tracks; i++)
-    {
-	img = gtk_image_new_from_stock (GTK_STOCK_CDROM, GTK_ICON_SIZE_MENU);
-	g_snprintf (track, 128, _("Track %i"), i+1);
-	mi = gtk_image_menu_item_new_with_label (track);
-	gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (mi), img);
-	gtk_widget_show (mi);
-	gtk_menu_shell_append (GTK_MENU_SHELL (menu), mi);
-	g_object_set_data (G_OBJECT (mi), "track", GUINT_TO_POINTER (i+1));
-	g_signal_connect (mi, "activate",
-		          G_CALLBACK (track_menu_item_activated_cb), disc_menu);
-    }
-    
-    g_signal_connect_swapped (menu, "selection-done",
-			      G_CALLBACK (gtk_widget_destroy), menu);
-    
-    gtk_menu_popup (GTK_MENU (menu), 
-		    NULL, NULL,
-		    NULL, NULL,
-		    button, activate_time);
-}
-
-static gboolean
-parole_disc_menu_show_disc_track (GtkWidget *widget, GdkEventButton *ev, ParoleDiscMenu *menu)
-{
-    if ( ev->button == 1 )
-    {
-	parole_disc_menu_show_disc_track_menu (menu, ev->button, ev->time);
-    }
-    
-    return FALSE;
-}
-
-static void
-parole_disc_menu_class_init (ParoleDiscMenuClass *klass)
-{
-    GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
-    object_class->finalize = parole_disc_menu_finalize;
-
-    g_type_class_add_private (klass, sizeof (ParoleDiscMenuPrivate));
-}
-
-static void
-parole_disc_menu_init (ParoleDiscMenu *menu)
-{
-    GtkBuilder *builder;
-    GdkColor color;
-    
-    menu->priv = PAROLE_DISC_MENU_GET_PRIVATE (menu);
-    
-    menu->priv->tracks = 0;
-    
-    builder = parole_builder_get_main_interface ();
-    
-    menu->priv->disc_track = GTK_WIDGET (gtk_builder_get_object (builder, "select-track"));
-    menu->priv->next_chapter = GTK_WIDGET (gtk_builder_get_object (builder, "next-chapter"));
-    menu->priv->prev_chapter = GTK_WIDGET (gtk_builder_get_object (builder, "prev-chapter"));
-    menu->priv->chapter_menu = GTK_WIDGET (gtk_builder_get_object (builder, "chapter-menu"));
-    menu->priv->dvd_menu = GTK_WIDGET (gtk_builder_get_object (builder, "dvd-menu"));
-    menu->priv->info = GTK_WIDGET (gtk_builder_get_object (builder, "info"));
-    menu->priv->eventboxinfo = GTK_WIDGET (gtk_builder_get_object (builder, "eventboxinfo"));
-    menu->priv->disc_box = GTK_WIDGET (gtk_builder_get_object (builder, "disc-box"));
-    
-    gdk_color_parse ("black", &color);
-    
-    gtk_widget_modify_bg (menu->priv->eventboxinfo, GTK_STATE_NORMAL, &color);
-    gtk_widget_modify_bg (menu->priv->disc_box, GTK_STATE_NORMAL, &color);
-
-    menu->priv->current_media_type = PAROLE_MEDIA_TYPE_UNKNOWN;
-    
-    g_signal_connect (menu->priv->disc_track, "button-press-event",
-		      G_CALLBACK (parole_disc_menu_show_disc_track), menu);
-    
-    g_signal_connect_swapped (menu->priv->next_chapter, "clicked",
-			      G_CALLBACK (parole_disc_menu_next_chapter_cb), menu);
-    
-    g_signal_connect_swapped (menu->priv->prev_chapter, "clicked",
-			      G_CALLBACK (parole_disc_menu_prev_chapter_cb), menu);
-			      
-    g_signal_connect_swapped (menu->priv->dvd_menu, "clicked",
-			      G_CALLBACK (parole_disc_menu_dvd_menu_cb), menu);
-    
-    g_signal_connect_swapped (menu->priv->chapter_menu, "clicked",
-			      G_CALLBACK (parole_disc_menu_chapter_menu_cb), menu);
-			      
-    menu->priv->gst = PAROLE_GST (parole_gst_get ());
-    
-    g_signal_connect (G_OBJECT (menu->priv->gst), "media_state",
-		      G_CALLBACK (parole_disc_menu_media_state_cb), menu);
-    
-    g_object_unref (builder);
-}
-
-static void
-parole_disc_menu_finalize (GObject *object)
-{
-    ParoleDiscMenu *menu;
-
-    menu = PAROLE_DISC_MENU (object);
-
-    G_OBJECT_CLASS (parole_disc_menu_parent_class)->finalize (object);
-}
-
-ParoleDiscMenu *
-parole_disc_menu_new (void)
-{
-    ParoleDiscMenu *menu = NULL;
-    menu = g_object_new (PAROLE_TYPE_DISC_MENU, NULL);
-    return menu;
-}
-
-gboolean parole_disc_menu_visible (ParoleDiscMenu *menu)
-{
-    return (GTK_WIDGET_VISIBLE (menu->priv->next_chapter));
-}
-
-gboolean parole_disc_menu_seek_next (ParoleDiscMenu *menu)
-{
-    if ( menu->priv->current_media_type == PAROLE_MEDIA_TYPE_DVD ||
-	 menu->priv->current_media_type == PAROLE_MEDIA_TYPE_CDDA )
-    {
-	parole_disc_menu_next_chapter_cb (menu);
-	return TRUE;
-    }
-    
-    return FALSE;
-}
-
-gboolean parole_disc_menu_seek_prev (ParoleDiscMenu *menu)
-{
-    if ( menu->priv->current_media_type == PAROLE_MEDIA_TYPE_DVD ||
-	 menu->priv->current_media_type == PAROLE_MEDIA_TYPE_CDDA )
-    {
-	parole_disc_menu_prev_chapter_cb (menu);
-	return TRUE;
-    }
-    
-    return FALSE;
-}
-
-void parole_disc_menu_set_fullscreen (ParoleDiscMenu *menu, gboolean fullscreen)
-{
-}
diff --git a/parole/parole-disc-menu.h b/parole/parole-disc-menu.h
deleted file mode 100644
index 02ff929..0000000
--- a/parole/parole-disc-menu.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#ifndef __PAROLE_DISC_MENU_H
-#define __PAROLE_DISC_MENU_H
-
-#include <glib-object.h>
-
-G_BEGIN_DECLS
-
-#define PAROLE_TYPE_DISC_MENU        (parole_disc_menu_get_type () )
-#define PAROLE_DISC_MENU(o)          (G_TYPE_CHECK_INSTANCE_CAST ((o), PAROLE_TYPE_DISC_MENU, ParoleDiscMenu))
-#define PAROLE_IS_DISC_MENU(o)       (G_TYPE_CHECK_INSTANCE_TYPE ((o), PAROLE_TYPE_DISC_MENU))
-
-typedef struct ParoleDiscMenuPrivate ParoleDiscMenuPrivate;
-
-typedef struct
-{
-    GObject         		parent;
-    ParoleDiscMenuPrivate      *priv;
-} ParoleDiscMenu;
-
-typedef struct
-{
-    GObjectClass 		parent_class;
-} ParoleDiscMenuClass;
-
-GType        			parole_disc_menu_get_type        (void) G_GNUC_CONST;
-
-ParoleDiscMenu                 *parole_disc_menu_new             (void);
-
-gboolean			parole_disc_menu_visible	 (ParoleDiscMenu *menu);
-
-gboolean			parole_disc_menu_seek_next	 (ParoleDiscMenu *menu);
-
-gboolean			parole_disc_menu_seek_prev	 (ParoleDiscMenu *menu);
-
-void				parole_disc_menu_set_fullscreen  (ParoleDiscMenu *menu,
-								  gboolean fullscreen);
-
-G_END_DECLS
-
-#endif /* __PAROLE_DISC_MENU_H */
diff --git a/parole/parole-disc.c b/parole/parole-disc.c
deleted file mode 100644
index 4e29c28..0000000
--- a/parole/parole-disc.c
+++ /dev/null
@@ -1,438 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <fcntl.h>
-#include <unistd.h>
-#include <sys/stat.h>
-#include <sys/ioctl.h>
-
-#if defined(__linux__)
-#include <linux/cdrom.h>
-#endif
-
-#include <gio/gio.h>
-#include <gtk/gtk.h>
-
-#include <libxfce4util/libxfce4util.h>
-
-#include "parole-disc.h"
-#include "parole-builder.h"
-#include "gmarshal.h"
-
-static void parole_disc_finalize   (GObject *object);
-
-#define PAROLE_DISC_GET_PRIVATE(o) \
-(G_TYPE_INSTANCE_GET_PRIVATE ((o), PAROLE_TYPE_DISC, ParoleDiscPrivate))
-
-struct ParoleDiscPrivate
-{
-    GVolumeMonitor *monitor;
-    GPtrArray      *array;
-    GtkWidget      *media_menu;
-    
-    gboolean	    needs_update;
-};
-
-enum
-{
-    DISC_SELECTED,
-    LAST_SIGNAL
-};
-
-static guint signals [LAST_SIGNAL] = { 0 };
-
-G_DEFINE_TYPE (ParoleDisc, parole_disc, G_TYPE_OBJECT)
-
-typedef struct
-{
-    GtkWidget      *mi;
-    gchar          *uri;
-    gchar          *device;
-    ParoleDiscKind  kind;
-    
-} MountData;
-
-static void
-free_mount_data (gpointer data)
-{
-    MountData *mount;
-    
-    mount = (MountData *) data;
-    
-    if ( mount->uri )
-	g_free (mount->uri);
-	
-    if ( mount->device )
-	g_free (mount->device);
-	
-    g_free (mount);
-}
-
-static void
-parole_disc_media_activate_cb (GtkWidget *widget, ParoleDisc *disc)
-{
-    MountData *data;
-    
-    data = g_object_get_data (G_OBJECT (widget), "mount-data");
-    
-    g_signal_emit (G_OBJECT (disc), signals [DISC_SELECTED], 0, data->uri, data->device);
-}
-
-static MountData *
-parole_disc_get_mount_data (ParoleDisc *disc, 
-			    const gchar *label, 
-			    const gchar *uri, 
-			    const gchar *device,
-			    ParoleDiscKind kind)
-{
-    MountData *data;
-    GtkWidget *img;
-    
-    data = g_new0 (MountData, 1);
-    
-    data->kind = kind;
-    data->uri = data->device = NULL;
-    data->uri = g_strdup (uri);
-    data->device = g_strdup (device);
-	
-    data->mi = gtk_image_menu_item_new_with_label (label);
-	
-    img = gtk_image_new_from_stock (GTK_STOCK_CDROM, GTK_ICON_SIZE_MENU);
-    gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (data->mi), 
-				       img);
-    gtk_widget_show (data->mi);
-    gtk_widget_show (img);
-	
-    g_object_set_data (G_OBJECT (data->mi),
-		      "mount-data", data);
-	
-    gtk_menu_shell_insert (GTK_MENU_SHELL (disc->priv->media_menu), data->mi, 2);
-    
-    g_signal_connect (data->mi, "activate",
-		      G_CALLBACK (parole_disc_media_activate_cb), disc);
-    return data;
-}
-
-static void
-parole_disc_add_mount_to_menu (ParoleDisc *disc, GMount *mount, const gchar *device)
-{
-    GFile *file;
-    gchar **content_type;
-    guint i;
-    ParoleDiscKind kind;
-    gchar *uri;
-    
-    file = g_mount_get_root (mount);
-    
-    if ( g_file_has_uri_scheme (file, "cdda") )
-    {
-	kind = PAROLE_DISC_CDDA;
-	uri = g_strdup ("cdda://");
-	goto got_cdda;
-    }
-	
-    content_type = g_content_type_guess_for_tree (file);
-
-    for ( i = 0; content_type && content_type[i]; i++)
-    {
-	TRACE ("Checking disc content type : %s", content_type[i]);
-	    
-	if ( !g_strcmp0 (content_type[i], "x-content/video-dvd") )
-	{
-	    kind = PAROLE_DISC_DVD;
-	    uri = g_strdup ("dvd:/");
-	    break;
-	}
-	else if ( !g_strcmp0 (content_type[i], "x-content/video-vcd") )
-	{
-	    kind = PAROLE_DISC_VCD;
-	    uri = g_strdup ("vcd:/");
-	    break;
-	}
-	else if ( !g_strcmp0 (content_type[i], "x-content/video-svcd") )
-	{
-	    kind = PAROLE_DISC_SVCD;
-	    uri = g_strdup ("svcd:/");
-	    break;
-	}
-	else if ( !g_strcmp0 (content_type[i], "x-content/audio-cdda") )
-	{
-	    kind = PAROLE_DISC_CDDA;
-	    uri = g_strdup ("cdda://");
-	    break;
-	}
-    }
-    
-    if ( content_type )
-	g_strfreev (content_type);
-
-got_cdda:
-    if ( kind != PAROLE_DISC_UNKNOWN )
-    {
-	MountData *data;
-	gchar *name;
-	gchar *label;
-	
-	name = g_mount_get_name (mount);
-	label = g_strdup_printf ("%s %s", _("Play Disc"), name);
-	
-	data = parole_disc_get_mount_data (disc, label, uri, device, kind);
-	g_free (uri);
-	
-	g_ptr_array_add (disc->priv->array, data);
-	g_free (label);
-	g_free (name);
-    }
-    
-    g_object_unref (file);
-}
-
-static void
-parole_disc_check_cdrom (ParoleDisc *disc, GVolume *volume, const gchar *device)
-{
-#if defined(__linux__)
-    gint fd;
-    gint drive;
-
-    TRACE ("device : %s", device);
-    
-    if ( (fd = open (device, O_RDONLY)) < 0 )
-    {
-	g_debug ("Failed to open device : %s", device);
-	disc->priv->needs_update = TRUE;
-	goto out;
-    }
-    
-    if ( (drive = ioctl (fd, CDROM_DRIVE_STATUS, NULL)) )
-    {
-	if ( drive == CDS_DRIVE_NOT_READY )
-	{
-	    g_print ("Drive :%s is not yet ready\n", device);
-	    disc->priv->needs_update = TRUE;
-	}
-	else if ( drive == CDS_DISC_OK )
-	{
-	    if ( (drive = ioctl (fd, CDROM_DISC_STATUS, NULL)) > 0 )
-	    {
-		if ( drive == CDS_AUDIO || drive == CDS_MIXED )
-		{
-		    MountData *data;
-		    data = parole_disc_get_mount_data (disc, g_volume_get_name (volume), "cdda://", device, PAROLE_DISC_CDDA);
-		    g_ptr_array_add (disc->priv->array, data);
-		}
-	    }
-	}
-    }
-    
-    close (fd);
-out:
-    ;
-#endif /* if defined(__linux__) */
-}
-
-static void
-parole_disc_add_drive (ParoleDisc *disc, GDrive *drive, const gchar *device)
-{
-    GList *list;
-    guint len;
-    guint i;
-    
-    list = g_drive_get_volumes (drive);
-    len = g_list_length (list);
-    
-    for ( i = 0; i < len; i++)
-    {
-	GVolume *volume;
-	GMount *mount;
-	
-	volume = g_list_nth_data (list, i);
-	TRACE ("Volume name %s", g_volume_get_name (volume));
-	
-	mount = g_volume_get_mount (volume);
-	if ( mount )
-	{
-	    TRACE ("Mount name : %s", g_mount_get_name (mount));
-	    parole_disc_add_mount_to_menu (disc, mount, device);
-	    g_object_unref (mount);
-	}
-	else
-	{
-	    /* Could be a cdda?*/
-	    parole_disc_check_cdrom (disc, volume, device);
-	}
-    }
-    
-    g_list_foreach (list, (GFunc) g_object_unref, NULL);
-    g_list_free (list);
-}
-
-static void
-parole_disc_get_drives (ParoleDisc *disc)
-{
-    GList *list;
-    guint len;
-    guint i;
-    
-    list = g_volume_monitor_get_connected_drives (disc->priv->monitor);
-    
-    len = g_list_length (list);
-
-    /*
-     * Set the update flag here because it can be set later to TRUE
-     * in case a device is not yet ready.
-     */
-    disc->priv->needs_update = FALSE;
-    
-    for ( i = 0; i < len; i++)
-    {
-	GDrive *drive;
-	gchar *device = NULL;
-	
-	drive = g_list_nth_data (list, i);
-	
-	if ( g_drive_can_eject (drive) && g_drive_has_media (drive) )
-	{
-	    device = g_drive_get_identifier (drive, G_VOLUME_IDENTIFIER_KIND_UNIX_DEVICE);
-	    parole_disc_add_drive (disc, drive, device);
-	    if ( device )
-		g_free (device);
-	}
-    }
-    
-    g_list_foreach (list, (GFunc) g_object_unref, NULL);
-    g_list_free (list);
-}
-
-static void
-parole_disc_select_cb (GtkItem *item, ParoleDisc *disc)
-{
-    if ( disc->priv->needs_update )
-	parole_disc_get_drives (disc);
-}
-
-static void
-parole_disc_monitor_changed_cb (GVolumeMonitor *monitor, gpointer *device, ParoleDisc *disc)
-{
-    guint i;
-    
-    TRACE ("Changed");
-    for ( i = 0 ; i < disc->priv->array->len; i++)
-    {
-	MountData *data;
-	
-	data = g_ptr_array_index (disc->priv->array, i);
-	gtk_widget_destroy (data->mi);
-	g_ptr_array_remove_index (disc->priv->array, i);
-	g_free (data);
-    }
-    
-    disc->priv->needs_update = TRUE;
-}
-
-static void
-parole_disc_class_init (ParoleDiscClass *klass)
-{
-    GObjectClass *object_class = G_OBJECT_CLASS (klass);
-    
-    signals[DISC_SELECTED] = 
-        g_signal_new ("disc-selected",
-                      PAROLE_TYPE_DISC,
-                      G_SIGNAL_RUN_LAST,
-                      G_STRUCT_OFFSET (ParoleDiscClass, disc_selected),
-                      NULL, NULL,
-		      _gmarshal_VOID__STRING_STRING,
-                      G_TYPE_NONE, 2, 
-		      G_TYPE_STRING, G_TYPE_STRING);
-		      
-    object_class->finalize = parole_disc_finalize;
-
-    g_type_class_add_private (klass, sizeof (ParoleDiscPrivate));
-}
-
-static void
-parole_disc_init (ParoleDisc *disc)
-{
-    GtkBuilder *builder;
-    
-    disc->priv = PAROLE_DISC_GET_PRIVATE (disc);
-    
-    builder = parole_builder_get_main_interface ();
-    
-    disc->priv->array = g_ptr_array_new ();
-    disc->priv->needs_update = TRUE;
-    
-    disc->priv->monitor = g_volume_monitor_get ();
-    
-    g_signal_connect (G_OBJECT (disc->priv->monitor), "volume-added",
-		      G_CALLBACK (parole_disc_monitor_changed_cb), disc);
-    
-    g_signal_connect (G_OBJECT (disc->priv->monitor), "volume-removed",
-		      G_CALLBACK (parole_disc_monitor_changed_cb), disc);
-    
-    g_signal_connect (G_OBJECT (disc->priv->monitor), "mount-added",
-		      G_CALLBACK (parole_disc_monitor_changed_cb), disc);
-		      
-    g_signal_connect (G_OBJECT (disc->priv->monitor), "mount-removed",
-		      G_CALLBACK (parole_disc_monitor_changed_cb), disc);
-    
-    g_signal_connect (G_OBJECT (disc->priv->monitor), "drive-disconnected",
-		      G_CALLBACK (parole_disc_monitor_changed_cb), disc);
-    
-    g_signal_connect (G_OBJECT (disc->priv->monitor), "drive-eject-button",
-		      G_CALLBACK (parole_disc_monitor_changed_cb), disc);
-    
-    disc->priv->media_menu = GTK_WIDGET (gtk_builder_get_object (builder, "media-menu"));
-    
-    g_signal_connect (gtk_builder_get_object (builder, "media-menu-item"), "select",
-	              G_CALLBACK (parole_disc_select_cb), disc);
-		      
-    g_object_unref (builder);
-}
-
-static void
-parole_disc_finalize (GObject *object)
-{
-    ParoleDisc *disc;
-
-    disc = PAROLE_DISC (object);
-    
-    g_object_unref (disc->priv->monitor);
-    
-    g_ptr_array_foreach (disc->priv->array, (GFunc) free_mount_data, NULL);
-    g_ptr_array_free (disc->priv->array, TRUE);
-
-    G_OBJECT_CLASS (parole_disc_parent_class)->finalize (object);
-}
-
-ParoleDisc *
-parole_disc_new (void)
-{
-    ParoleDisc *disc = NULL;
-    disc = g_object_new (PAROLE_TYPE_DISC, NULL);
-    return disc;
-}
diff --git a/parole/parole-disc.h b/parole/parole-disc.h
deleted file mode 100644
index 23adbc2..0000000
--- a/parole/parole-disc.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#ifndef __PAROLE_DISC_H
-#define __PAROLE_DISC_H
-
-#include <glib-object.h>
-
-G_BEGIN_DECLS
-
-#define PAROLE_TYPE_DISC        (parole_disc_get_type () )
-#define PAROLE_DISC(o)          (G_TYPE_CHECK_INSTANCE_CAST ((o), PAROLE_TYPE_DISC, ParoleDisc))
-#define PAROLE_IS_DISC(o)       (G_TYPE_CHECK_INSTANCE_TYPE ((o), PAROLE_TYPE_DISC))
-
-typedef struct ParoleDiscPrivate ParoleDiscPrivate;
-
-typedef enum
-{
-    PAROLE_DISC_UNKNOWN,
-    PAROLE_DISC_CDDA,
-    PAROLE_DISC_VCD,
-    PAROLE_DISC_SVCD,
-    PAROLE_DISC_DVD
-    
-} ParoleDiscKind;
-
-typedef struct
-{
-    GObject         	   parent;
-    ParoleDiscPrivate     *priv;
-    
-} ParoleDisc;
-
-typedef struct
-{
-    GObjectClass 	   parent_class;
-    
-    void		   (*disc_selected)	       (ParoleDisc *disc,
-							const gchar *uri,
-							const gchar *device);
-    
-} ParoleDiscClass;
-
-GType                      parole_disc_get_type        (void) G_GNUC_CONST;
-
-ParoleDisc                *parole_disc_new             (void);
-
-G_END_DECLS
-
-#endif /* __PAROLE_DISC_H */
diff --git a/parole/parole-file.c b/parole/parole-file.c
deleted file mode 100644
index 64b6845..0000000
--- a/parole/parole-file.c
+++ /dev/null
@@ -1,389 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <glib.h>
-#include <gio/gio.h>
-
-#ifdef HAVE_TAGLIBC
-#include <taglib/tag_c.h>
-#endif
-
-#include "parole-file.h"
-
-#define PAROLE_FILE_GET_PRIVATE(o) \
-(G_TYPE_INSTANCE_GET_PRIVATE ((o), PAROLE_TYPE_FILE, ParoleFilePrivate))
-
-typedef struct _ParoleFilePrivate ParoleFilePrivate;
-
-struct _ParoleFilePrivate
-{
-    gchar 	*filename;
-    gchar 	*display_name;
-    gchar 	*uri;
-    gchar       *content_type;
-    
-};
-
-enum
-{
-    PROP_0,
-    PROP_PATH,
-    PROP_DISPLAY_NAME,
-    PROP_URI,
-    PROP_CONTENT_TYPE
-};
-
-G_DEFINE_TYPE (ParoleFile, parole_file, G_TYPE_OBJECT)
-
-static void
-parole_file_finalize (GObject *object)
-{
-    ParoleFile *file;
-    ParoleFilePrivate *priv;
-
-    file = PAROLE_FILE (object);
-    priv = PAROLE_FILE_GET_PRIVATE (file);
-    
-    g_debug ("File object finalized %s", priv->display_name);
-    
-    if ( priv->filename )
-	g_free (priv->filename);
-
-    if ( priv->uri )
-	g_free (priv->uri);
-	
-    if ( priv->display_name )
-	g_free (priv->display_name);
-	
-    if ( priv->content_type )
-	g_free (priv->content_type);
-    
-    G_OBJECT_CLASS (parole_file_parent_class)->finalize (object);
-}
-
-static void
-parole_file_set_property (GObject *object, guint prop_id, 
-			      const GValue *value, GParamSpec *pspec)
-{
-    ParoleFile *file;
-    file = PAROLE_FILE (object);
-    
-    switch (prop_id)
-    {
-	case PROP_PATH:
-	    PAROLE_FILE_GET_PRIVATE (file)->filename = g_value_dup_string (value);
-	    break;
-	case PROP_DISPLAY_NAME:
-	    PAROLE_FILE_GET_PRIVATE (file)->display_name = g_value_dup_string (value);
-	    break;
-	default:
-	    G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-	    break;
-    }
-}
-
-static void
-parole_file_get_property (GObject *object, guint prop_id, 
-			      GValue *value, GParamSpec *pspec)
-{
-    ParoleFile *file;
-
-    file = PAROLE_FILE (object);
-    
-    switch (prop_id)
-    {
-	case PROP_PATH:
-	    g_value_set_string (value, PAROLE_FILE_GET_PRIVATE (file)->filename);
-	    break;
-	case PROP_URI:
-	    g_value_set_string (value, PAROLE_FILE_GET_PRIVATE (file)->filename);
-	    break;
-	case PROP_CONTENT_TYPE:
-	    g_value_set_string (value, PAROLE_FILE_GET_PRIVATE (file)->content_type);
-	    break;
-	case PROP_DISPLAY_NAME:
-	    g_value_set_string (value, PAROLE_FILE_GET_PRIVATE (file)->display_name);
-	    break;
-	default:
-	    G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-	    break;
-    }
-}
-
-static void
-parole_file_constructed (GObject *object)
-{
-    GFile *gfile;
-    GFileInfo *info;
-    ParoleFile *file;
-    ParoleFilePrivate *priv;
-    GError *error = NULL;
-    
-    file = PAROLE_FILE (object);
-    priv = PAROLE_FILE_GET_PRIVATE (file);
-    
-    gfile = g_file_new_for_commandline_arg (priv->filename);
-
-    info = g_file_query_info (gfile, 
-			      "standard::*,",
-			      0,
-			      NULL,
-			      &error);
-
-    if ( error )
-    {
-	if ( G_LIKELY (error->code == G_IO_ERROR_NOT_SUPPORTED) )
-	{
-	    g_error_free (error);
-	    if ( !priv->display_name )
-	        priv->display_name = g_file_get_basename (gfile);
-	}
-	else
-	{
-	    if ( !priv->display_name )
-		priv->display_name = g_strdup (priv->filename);
-	    g_warning ("Unable to read file info %s", error->message);
-	}
-	goto out;
-    }
-#ifdef HAVE_TAGLIBC
-    else
-    {
-	TagLib_File *tag_file;
-	TagLib_Tag *tag;
-	gchar *title;
-	gchar *title_s;
-	
-	tag_file = taglib_file_new (priv->filename);
-	
-	if ( tag_file )
-	{
-	    tag = taglib_file_tag (tag_file);
-	    if ( tag )
-	    {
-		title = taglib_tag_title (tag);
-	    
-		if ( title )
-		{
-		    title_s = g_strstrip (title);
-		    if ( strlen (title_s ) )
-		    {
-			priv->display_name = g_strdup (title_s);
-		    }
-		}
-		    
-		taglib_tag_free_strings ();
-	    }
-	    taglib_file_free (tag_file);
-	}
-    }
-#endif
-
-    if (!priv->display_name)
-	priv->display_name = g_strdup (g_file_info_get_display_name (info));
-
-    priv->content_type = g_strdup (g_file_info_get_content_type (info));
-    
-    g_object_unref (info);
-    
-out:
-    priv->uri = g_file_get_uri (gfile);
-    g_object_unref (gfile);
-}
-
-static void
-parole_file_class_init (ParoleFileClass *klass)
-{
-    GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
-    object_class->finalize = parole_file_finalize;
-    
-    object_class->constructed = parole_file_constructed;
-    object_class->set_property = parole_file_set_property;
-    object_class->get_property = parole_file_get_property;
-
-    /**
-     * ParoleFile:filename:
-     * 
-     * The filename of the file.
-     * 
-     * Since: 0.1 
-     **/
-    g_object_class_install_property (object_class,
-				     PROP_PATH,
-				     g_param_spec_string ("filename",
-							  NULL, NULL,
-							  NULL,
-							  G_PARAM_CONSTRUCT_ONLY|
-							  G_PARAM_READWRITE));
-
-    /**
-     * ParoleFile:display-name:
-     * 
-     * a UTF-8 name that can be displayed in the UI.
-     * 
-     * Since: 0.1 
-     **/
-    g_object_class_install_property (object_class,
-				     PROP_DISPLAY_NAME,
-				     g_param_spec_string ("display-name",
-							  NULL, NULL,
-							  NULL,
-							  G_PARAM_CONSTRUCT_ONLY|
-							  G_PARAM_READWRITE));
-
-    /**
-     * ParoleFile:uri:
-     * 
-     * The Uri of the file.
-     * 
-     * Since: 0.1 
-     **/
-    g_object_class_install_property (object_class,
-				     PROP_URI,
-				     g_param_spec_string ("uri",
-							  NULL, NULL,
-							  NULL,
-							  G_PARAM_READABLE));
-
-    /**
-     * ParoleFile:content-type:
-     * 
-     * The content type of the file.
-     * 
-     * Since: 0.1 
-     **/
-    g_object_class_install_property (object_class,
-				     PROP_CONTENT_TYPE,
-				     g_param_spec_string ("content-type",
-							  NULL, NULL,
-							  NULL,
-							  G_PARAM_READABLE));
-
-    g_type_class_add_private (klass, sizeof (ParoleFilePrivate));
-}
-
-static void
-parole_file_init (ParoleFile *file)
-{
-    ParoleFilePrivate *priv;
-    
-    priv = PAROLE_FILE_GET_PRIVATE (file);
-
-    priv->filename         = NULL;
-    priv->display_name = NULL;
-    priv->uri          = NULL;
-    priv->content_type    = NULL;
-}
-
-/**
- * parole_file_new:
- * @filename: filename.
- * 
- * 
- * 
- * Returns: A new #ParoleFile object.
- **/
-ParoleFile *
-parole_file_new (const gchar *filename)
-{
-    ParoleFile *file = NULL;
-    file = g_object_new (PAROLE_TYPE_FILE, "filename", filename, NULL);
-    return file;
-}
-
-ParoleFile *
-parole_file_new_with_display_name (const gchar *filename, const gchar *display_name)
-{
-    ParoleFile *file = NULL;
-    file = g_object_new (PAROLE_TYPE_FILE, 
-			 "filename", filename, 
-			 "display-name", display_name, 
-			 NULL);
-    return file;
-}
-
-/**
- * parole_file_get_file_name:
- * @file: a #ParoleFile.
- *  
- * 
- * Returns: A string containing the file name.
- **/
-const gchar *
-parole_file_get_file_name (const ParoleFile *file)
-{
-    g_return_val_if_fail (PAROLE_IS_FILE (file), NULL);
-    
-    return PAROLE_FILE_GET_PRIVATE (file)->filename;
-}
-
-/**
- * parole_file_get_display_name:
- * @file: a #ParoleFile.
- *  
- * 
- * Returns: A string containing the display name.
- **/
-const gchar *
-parole_file_get_display_name (const ParoleFile *file)
-{
-    g_return_val_if_fail (PAROLE_IS_FILE (file), NULL);
-    
-    return PAROLE_FILE_GET_PRIVATE (file)->display_name;
-}
-
-/**
- * parole_file_get_uri:
- * @file: a #ParoleFile.
- *  
- * 
- * Returns: A string containing the file uri.
- **/
-const gchar *
-parole_file_get_uri (const ParoleFile *file)
-{
-    g_return_val_if_fail (PAROLE_IS_FILE (file), NULL);
-    
-    return PAROLE_FILE_GET_PRIVATE (file)->uri;
-}
-
-/**
- * parole_file_get_content_type:
- * @file: a #ParoleFile.
- *  
- * 
- * Returns: A string containing the content type of the file.
- **/
-const gchar *
-parole_file_get_content_type (const ParoleFile *file) 
-{
-    g_return_val_if_fail (PAROLE_IS_FILE (file), NULL);
-    
-    return PAROLE_FILE_GET_PRIVATE (file)->content_type;
-}
diff --git a/parole/parole-filters.c b/parole/parole-filters.c
deleted file mode 100644
index 0d8811b..0000000
--- a/parole/parole-filters.c
+++ /dev/null
@@ -1,223 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <libxfce4util/libxfce4util.h>
-#include <glib.h>
-
-#include "parole-filters.h"
-#include "parole-utils.h"
-#include "parole-pl-parser.h"
-#include "data/mime/parole-mime-types.h"
-
-static char *playlist_mime_types[] = {
-    "text/plain",
-    "audio/x-mpegurl",
-    "audio/playlist",
-    "audio/x-scpls",
-    "audio/x-ms-asx",
-    "application/xml",
-    "application/xspf+xml",
-};
-
-/*
- * Supported Audio formats.
- */
-GtkFileFilter 		*parole_get_supported_audio_filter	(void)
-{
-    GtkFileFilter *filter;
-    guint i;
-    
-    filter = gtk_file_filter_new ();
-    
-    gtk_file_filter_set_name (filter, _("Audio"));
-    
-    for ( i = 0; i < G_N_ELEMENTS (audio_mime_types); i++)
-	gtk_file_filter_add_mime_type (filter, audio_mime_types[i]);
-    
-    return filter;
-}
-
-/*
- * Supported Video formats.
- */
-GtkFileFilter 		*parole_get_supported_video_filter	(void)
-{
-    GtkFileFilter *filter;
-    guint i;
-    
-    filter = gtk_file_filter_new ();
-    
-    gtk_file_filter_set_name (filter, _("Video"));
-    
-    for ( i = 0; i < G_N_ELEMENTS (video_mime_types); i++)
-	gtk_file_filter_add_mime_type (filter, video_mime_types[i]);
-    
-    return filter;
-}
-
-/*
- * Supported Audio And Video.
- */
-GtkFileFilter 		*parole_get_supported_media_filter	(void)
-{
-    GtkFileFilter *filter;
-    guint i;
-    
-    filter = gtk_file_filter_new ();
-    
-    gtk_file_filter_set_name (filter, _("Audio and video"));
-    
-    for ( i = 0; i < G_N_ELEMENTS (audio_mime_types); i++)
-	gtk_file_filter_add_mime_type (filter, audio_mime_types[i]);
-	
-    for ( i = 0; i < G_N_ELEMENTS (video_mime_types); i++)
-	gtk_file_filter_add_mime_type (filter, video_mime_types[i]);
-    
-    return filter;
-}
-
-GtkFileFilter *parole_get_supported_files_filter (void)
-{
-    GtkFileFilter *filter;
-    guint i;
-    
-    filter = parole_get_supported_media_filter ();
-    
-    gtk_file_filter_set_name (filter, _("All supported files"));
-    
-    for ( i = 0; i < G_N_ELEMENTS (playlist_mime_types); i++)
-	gtk_file_filter_add_mime_type (filter, playlist_mime_types[i]);
-    
-    return filter;
-    
-}
-
-GtkFileFilter 	*parole_get_supported_playlist_filter	(void)
-{
-    GtkFileFilter *filter;
-    guint i;
-    
-    filter = gtk_file_filter_new ();
-    
-    gtk_file_filter_set_name (filter, _("Playlist files"));
-    
-    for ( i = 0; i < G_N_ELEMENTS (playlist_mime_types); i++)
-	gtk_file_filter_add_mime_type (filter, playlist_mime_types[i]);
-    
-    return filter;
-}
-
-gboolean parole_file_filter (GtkFileFilter *filter, ParoleFile *file)
-{
-    GtkFileFilterInfo filter_info;
-
-    gboolean ret;
-    
-    filter_info.display_name = parole_file_get_display_name (file);
-    filter_info.mime_type = parole_file_get_content_type (file);
-    
-    filter_info.contains = GTK_FILE_FILTER_DISPLAY_NAME | GTK_FILE_FILTER_MIME_TYPE;
-    
-    ret = gtk_file_filter_filter (filter, &filter_info);
-
-    return ret;
-}
-
-void parole_get_media_files (GtkFileFilter *filter, const gchar *path, 
-			     gboolean recursive, GSList **list)
-{
-    GtkFileFilter *playlist_filter;
-    GSList *list_internal = NULL;
-    GSList *playlist = NULL;
-    GDir *dir;
-    const gchar *name;
-    ParoleFile *file;
-
-    playlist_filter = parole_get_supported_playlist_filter ();
-    g_object_ref_sink (playlist_filter);
-
-    if ( g_file_test (path, G_FILE_TEST_IS_REGULAR ) )
-    {
-	file = parole_file_new (path);
-	if ( parole_file_filter (playlist_filter, file) )
-	{
-	    playlist = parole_pl_parser_load_file (path);
-	    g_object_unref (file);
-	    if ( playlist)
-	    {
-		*list = g_slist_concat (*list, playlist);
-	    }
-	}
-	else if ( parole_file_filter (filter, file) )
-	{
-	    *list = g_slist_append (*list, file);
-	}
-	else
-	    g_object_unref (file);
-    }
-    else if ( g_file_test (path, G_FILE_TEST_IS_DIR ) )
-    {
-	dir = g_dir_open (path, 0, NULL);
-    
-	if ( G_UNLIKELY (dir == NULL) )
-	    return;
-	
-	while ( (name = g_dir_read_name (dir)) )
-	{
-	    gchar *path_internal = g_strdup_printf ("%s/%s", path, name);
-	    if ( g_file_test (path_internal, G_FILE_TEST_IS_DIR) && recursive)
-	    {
-		parole_get_media_files (filter, path_internal, TRUE, list);
-	    }
-	    else if ( g_file_test (path_internal, G_FILE_TEST_IS_REGULAR) )
-	    {
-		file = parole_file_new (path_internal);
-		if ( parole_file_filter (playlist_filter, file) )
-		{
-		    playlist = parole_pl_parser_load_file (path);
-		    g_object_unref (file);
-		    if ( playlist)
-		    {
-			*list = g_slist_concat (*list, playlist);
-		    }
-		}
-		else if ( parole_file_filter (filter, file) )
-		{
-		    list_internal = g_slist_append (list_internal, file);
-		}
-		else
-		    g_object_unref (file);
-	    }
-	    g_free (path_internal);
-	}
-	list_internal = g_slist_sort (list_internal, (GCompareFunc) thunar_file_compare_by_name);
-	g_dir_close (dir);
-	*list = g_slist_concat (*list, list_internal);
-    }
-    g_object_unref (playlist_filter);
-}
diff --git a/parole/parole-filters.h b/parole/parole-filters.h
deleted file mode 100644
index 2a12951..0000000
--- a/parole/parole-filters.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#ifndef __PAROLE_FILTERS_H
-#define __PAROLE_FILTERS_H
-
-#include <gtk/gtk.h>
-
-#include "parole-file.h"
-
-G_BEGIN_DECLS
-
-typedef enum
-{
-    PAROLE_FILE_UNKNOWN,
-    PAROLE_FILE_AUDIO,
-    PAROLE_FILE_VIDEO,
-    PAROLE_FILE_PLAYLIST
-    
-} ParoleFileFormat;
-
-GtkFileFilter 		*parole_get_supported_audio_filter	(void);
-
-GtkFileFilter 		*parole_get_supported_video_filter	(void);
-
-GtkFileFilter 		*parole_get_supported_media_filter	(void);
-
-GtkFileFilter 		*parole_get_supported_files_filter	(void);
-
-GtkFileFilter 		*parole_get_supported_playlist_filter	(void);
-
-gboolean		 parole_file_filter			(GtkFileFilter *filter,
-								 ParoleFile *file);
-
-ParoleFileFormat	 parole_file_guess_format		(ParoleFile *file);
-
-void			 parole_get_media_files			(GtkFileFilter *filter,
-								 const gchar *path,
-								 gboolean recursive,
-								 GSList **list);
-
-G_END_DECLS
-
-#endif /* PAROLE_FILTERS_H */
diff --git a/parole/parole-mediachooser.c b/parole/parole-mediachooser.c
deleted file mode 100644
index 59ec020..0000000
--- a/parole/parole-mediachooser.c
+++ /dev/null
@@ -1,286 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <gtk/gtk.h>
-#include <glib.h>
-
-#include <libxfce4util/libxfce4util.h>
-#include <libxfcegui4/libxfcegui4.h>
-
-#include "interfaces/mediachooser_ui.h"
-
-#include "parole-mediachooser.h"
-#include "parole-builder.h"
-#include "parole-file.h"
-#include "parole-filters.h"
-#include "parole-rc-utils.h"
-#include "parole-utils.h"
-
-#include "common/parole-common.h"
-
-#include "gmarshal.h"
-
-/*
- * GtkBuilder Callbacks
- */
-void	parole_media_chooser_open 	(GtkWidget *widget, 
-				         ParoleMediaChooser *chooser);
-
-void	parole_media_chooser_close	(GtkWidget *widget,
-					 ParoleMediaChooser *chooser);
-					 
-void	media_chooser_folder_changed_cb (GtkWidget *widget, 
-					 gpointer data);
-
-void	media_chooser_file_activate_cb  (GtkFileChooser *filechooser,
-					 ParoleMediaChooser *chooser);
-
-void	parole_media_chooser_recursive_toggled_cb (GtkToggleButton *recursive,
-						   gpointer data);
-    
-void    parole_media_chooser_replace_toggled_cb (GtkToggleButton *button,
-						 gpointer data);    
-
-enum
-{
-    MEDIA_FILES_OPENED,
-    LAST_SIGNAL
-};
-
-static guint signals [LAST_SIGNAL] = { 0 };
-
-G_DEFINE_TYPE (ParoleMediaChooser, parole_media_chooser, GTK_TYPE_DIALOG)
-
-void parole_media_chooser_close	(GtkWidget *widget, ParoleMediaChooser *chooser)
-{
-    gtk_widget_destroy (GTK_WIDGET (chooser));
-}
-
-void
-media_chooser_folder_changed_cb (GtkWidget *widget, gpointer data)
-{
-    gchar *folder;
-    folder = gtk_file_chooser_get_current_folder (GTK_FILE_CHOOSER (widget));
-    
-    if ( folder )
-    {
-	parole_rc_write_entry_string ("media-chooser-folder", PAROLE_RC_GROUP_GENERAL, folder);
-	g_free (folder);
-    }
-}
-
-static void
-parole_media_chooser_add (ParoleMediaChooser *chooser, GtkWidget *file_chooser)
-{
-    GSList *media_files = NULL;
-    GSList *files;
-    GtkFileFilter *filter;
-    GtkWidget *recursive;
-    GtkWidget *replace;
-    gboolean scan_recursive;
-    gboolean replace_playlist;
-    gchar *file;
-    guint    i;
-    guint len;
-    
-    files = gtk_file_chooser_get_filenames (GTK_FILE_CHOOSER (file_chooser));
-    filter = gtk_file_chooser_get_filter (GTK_FILE_CHOOSER (file_chooser));
-    
-    if ( G_UNLIKELY (files == NULL) )
-	return;
-	
-    recursive = g_object_get_data (G_OBJECT (chooser), "recursive");
-    replace = g_object_get_data (G_OBJECT (chooser), "replace-playlist");
-    
-    scan_recursive = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (recursive));
-    replace_playlist = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (replace));
-    
-    len = g_slist_length (files);
-    
-    for ( i = 0; i < len; i++)
-    {
-	file = g_slist_nth_data (files, i);
-	parole_get_media_files (filter, file, scan_recursive, &media_files);
-    }
-    
-    g_signal_emit (G_OBJECT (chooser), signals [MEDIA_FILES_OPENED], 0, replace_playlist, media_files);
-    g_slist_free (media_files);
-    
-    g_slist_foreach (files, (GFunc) g_free, NULL);
-    g_slist_free (files);
-}
-
-void
-parole_media_chooser_open (GtkWidget *widget, ParoleMediaChooser *chooser)
-{
-    GtkWidget *file_chooser;
-
-    file_chooser = GTK_WIDGET (g_object_get_data (G_OBJECT (chooser), "file-chooser"));
-    
-    parole_window_busy_cursor (GTK_WIDGET (chooser)->window);
-    parole_media_chooser_add (chooser, file_chooser);
-    gtk_widget_destroy (GTK_WIDGET (chooser));
-}
-
-void media_chooser_file_activate_cb (GtkFileChooser *filechooser, ParoleMediaChooser *chooser)
-{
-    parole_media_chooser_open (NULL, chooser);
-}
-
-void	parole_media_chooser_recursive_toggled_cb (GtkToggleButton *recursive,
-						   gpointer data)
-{
-    parole_rc_write_entry_bool ("scan-recursive", 
-			        PAROLE_RC_GROUP_GENERAL, 
-				gtk_toggle_button_get_active (recursive));
-}
-
-void    parole_media_chooser_replace_toggled_cb (GtkToggleButton *button,
-						 gpointer data)
-{
-    parole_rc_write_entry_bool ("replace-playlist", 
-			        PAROLE_RC_GROUP_GENERAL, 
-				gtk_toggle_button_get_active (button));
-}
-
-static void
-parole_media_chooser_open_internal (GtkWidget *chooser)
-{
-    ParoleMediaChooser *media_chooser;
-    GtkWidget   *vbox;
-    GtkWidget   *file_chooser;
-    GtkBuilder  *builder;
-    GtkWidget   *open;
-    GtkWidget   *img;
-    GtkWidget   *recursive;
-    GtkWidget   *replace;
-    gboolean     scan_recursive;
-    gboolean     replace_playlist;
-    const gchar *folder;
-
-    media_chooser = PAROLE_MEDIA_CHOOSER (chooser);
-    
-    builder = parole_builder_new_from_string (mediachooser_ui, mediachooser_ui_length);
-    
-    file_chooser = GTK_WIDGET (gtk_builder_get_object (builder, "filechooserwidget"));
-    
-    vbox = GTK_WIDGET (gtk_builder_get_object (builder, "vbox"));
-    open = GTK_WIDGET (gtk_builder_get_object (builder, "open"));
-    
-    gtk_window_set_title (GTK_WINDOW (chooser), _("Add media files"));
-
-    gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (file_chooser), parole_get_supported_files_filter ());
-    gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (file_chooser), parole_get_supported_media_filter ());
-    gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (file_chooser), parole_get_supported_audio_filter ());
-    gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (file_chooser), parole_get_supported_video_filter ());
-    gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (file_chooser), parole_get_supported_playlist_filter ());
-
-    folder = parole_rc_read_entry_string ("media-chooser-folder", PAROLE_RC_GROUP_GENERAL, NULL);
-    
-    if ( folder )
-	gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (file_chooser), folder);
-    
-    gtk_file_chooser_set_select_multiple (GTK_FILE_CHOOSER (file_chooser), TRUE);
-    
-    scan_recursive = parole_rc_read_entry_bool ("scan-recursive", PAROLE_RC_GROUP_GENERAL, TRUE);
-    
-    recursive = GTK_WIDGET (gtk_builder_get_object (builder, "recursive"));
-    replace = GTK_WIDGET (gtk_builder_get_object (builder, "replace"));
-    
-    scan_recursive = parole_rc_read_entry_bool ("scan-recursive", PAROLE_RC_GROUP_GENERAL, TRUE);
-    replace_playlist = parole_rc_read_entry_bool ("replace-playlist", PAROLE_RC_GROUP_GENERAL, FALSE);
-     
-    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (recursive), scan_recursive);
-    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (replace), replace_playlist);
-    
-    img = gtk_image_new_from_stock (GTK_STOCK_ADD, GTK_ICON_SIZE_BUTTON);
-    
-    g_object_set (G_OBJECT (open),
-		  "image", img,
-		  "label", _("Add"),
-		  NULL);
-    
-    g_object_set_data (G_OBJECT (chooser), "file-chooser", file_chooser);
-    g_object_set_data (G_OBJECT (chooser), "recursive", recursive);
-    g_object_set_data (G_OBJECT (chooser), "replace-playlist", replace);
-    
-    gtk_container_add (GTK_CONTAINER (GTK_DIALOG (media_chooser)->vbox), vbox);
-    gtk_builder_connect_signals (builder, chooser);
-    g_signal_connect (chooser, "destroy",
-		      G_CALLBACK (gtk_widget_destroy), chooser);
-		      
-    g_object_unref (builder);
-}
-
-static void
-parole_media_chooser_finalize (GObject *object)
-{
-    G_OBJECT_CLASS (parole_media_chooser_parent_class)->finalize (object);
-}
-
-static void
-parole_media_chooser_class_init (ParoleMediaChooserClass *klass)
-{
-    GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
-    signals[MEDIA_FILES_OPENED] = 
-        g_signal_new("media-files-opened",
-                      PAROLE_TYPE_MEDIA_CHOOSER,
-                      G_SIGNAL_RUN_LAST,
-                      G_STRUCT_OFFSET (ParoleMediaChooserClass, media_files_opened),
-                      NULL, NULL,
-		      _gmarshal_VOID__BOOLEAN_POINTER,
-                      G_TYPE_NONE, 2, 
-		      G_TYPE_BOOLEAN,
-		      G_TYPE_POINTER);
-
-    object_class->finalize = parole_media_chooser_finalize;
-}
-
-static void
-parole_media_chooser_init (ParoleMediaChooser *chooser)
-{
-    gtk_window_set_modal (GTK_WINDOW (chooser), TRUE);
-}
-
-GtkWidget *parole_media_chooser_open_local (GtkWidget *parent)
-{
-    ParoleMediaChooser *chooser;
-        
-    chooser = g_object_new (PAROLE_TYPE_MEDIA_CHOOSER, NULL);
-    
-    if ( parent )
-	gtk_window_set_transient_for (GTK_WINDOW (chooser), GTK_WINDOW (parent));
-	
-    gtk_window_set_position (GTK_WINDOW (chooser), GTK_WIN_POS_CENTER_ON_PARENT);
-    parole_media_chooser_open_internal (GTK_WIDGET (chooser));
-    
-    gtk_window_set_default_size (GTK_WINDOW (chooser), 680, 480);
-
-    return GTK_WIDGET (chooser);
-}
diff --git a/parole/parole-mediachooser.h b/parole/parole-mediachooser.h
deleted file mode 100644
index da57a88..0000000
--- a/parole/parole-mediachooser.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#ifndef __PAROLE_MEDIA_CHOOSER_H
-#define __PAROLE_MEDIA_CHOOSER_H
-
-#include <glib-object.h>
-#include <gtk/gtk.h>
-
-G_BEGIN_DECLS
-
-#define PAROLE_TYPE_MEDIA_CHOOSER        (parole_media_chooser_get_type () )
-#define PAROLE_MEDIA_CHOOSER(o)          (G_TYPE_CHECK_INSTANCE_CAST ((o), PAROLE_TYPE_MEDIA_CHOOSER, ParoleMediaChooser))
-#define PAROLE_IS_MEDIA_CHOOSER(o)       (G_TYPE_CHECK_INSTANCE_TYPE ((o), PAROLE_TYPE_MEDIA_CHOOSER))
-
-typedef struct ParoleMediaChooserPrivate ParoleMediaChooserPrivate;
-
-typedef struct
-{
-    GtkDialog         		 parent;
-    
-} ParoleMediaChooser;
-
-typedef struct
-{
-    GtkDialogClass 		 parent_class;
-    
-    void			 (*media_files_opened)		    (ParoleMediaChooser *chooser,
-								     gboolean replace,
-								     GSList *list);
-								     
-} ParoleMediaChooserClass;
-
-GType        			 parole_media_chooser_get_type      (void) G_GNUC_CONST;
-
-GtkWidget			*parole_media_chooser_open_local    (GtkWidget *parent);
-								     
-G_END_DECLS
-
-#endif /* __PAROLE_MEDIA_CHOOSER_H */
diff --git a/parole/parole-medialist.c b/parole/parole-medialist.c
deleted file mode 100644
index db9f8e2..0000000
--- a/parole/parole-medialist.c
+++ /dev/null
@@ -1,1381 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <gtk/gtk.h>
-#include <gdk/gdkkeysyms.h>
-#include <glib.h>
-#include <glib/gstdio.h>
-#include <gio/gio.h>
-
-#include <libxfce4util/libxfce4util.h>
-#include <libxfcegui4/libxfcegui4.h>
-
-#include "interfaces/playlist_ui.h"
-#include "interfaces/save-playlist_ui.h"
-
-#include "parole-builder.h"
-#include "parole-medialist.h"
-#include "parole-file.h"
-#include "parole-mediachooser.h"
-#include "parole-open-location.h"
-
-#include "parole-filters.h"
-#include "parole-pl-parser.h"
-#include "parole-utils.h"
-#include "parole-rc-utils.h"
-#include "parole-dbus.h"
-
-#include "common/parole-common.h"
-
-#define PAROLE_AUTO_SAVED_PLAYLIST 	"xfce4/parole/auto-saved-playlist.m3u"
-
-typedef struct
-{
-    GtkWidget *chooser;
-    GtkTreeSelection *sel;
-    ParoleMediaList *list;
-    
-} ParolePlaylistSave;
-
-static struct
-{
-    ParolePlFormat format;
-    gchar * ext;
-} playlist_format_map [] = {
-  { PAROLE_PL_FORMAT_UNKNOWN, ""      },
-  { PAROLE_PL_FORMAT_M3U,     ".m3u"  },
-  { PAROLE_PL_FORMAT_PLS,     ".pls"  },
-  { PAROLE_PL_FORMAT_ASX,     ".asx"  },
-  { PAROLE_PL_FORMAT_XSPF,    ".xspf" }
-};
-
-static GtkTargetEntry target_entry[] =
-{
-    { "STRING",        0, 0 },
-    { "text/uri-list", 0, 1 },
-};
-
-static void 	parole_media_list_dbus_class_init (ParoleMediaListClass *klass);
-static void 	parole_media_list_dbus_init 	  (ParoleMediaList      *list);
-
-static GtkTreeRowReference * 
-    parole_media_list_get_row_reference_from_iter (ParoleMediaList *list, 
-						   GtkTreeIter *iter, 
-						   gboolean select_path);
-
-static void 	parole_media_list_select_path 	  (ParoleMediaList *list, 
-						   GtkTreePath *path);
-
-static void	parole_media_list_clear_list 	  (ParoleMediaList *list);
-
-/*
- * Callbacks for GtkBuilder
- */
-void		parole_media_list_media_up_clicked_cb 	(GtkButton *button, 
-							 ParoleMediaList *list);
-							 
-void		parole_media_list_media_down_clicked_cb (GtkButton *button, 
-							 ParoleMediaList *list);
-
-void		parole_media_list_save_cb		(GtkButton *button,
-						         ParoleMediaList *list);
-							 
-void		parole_media_list_add_clicked_cb 	(GtkButton *button, 
-							 ParoleMediaList *list);
-							 
-void		parole_media_list_remove_clicked_cb 	(GtkButton *button, 
-							 ParoleMediaList *list);
-
-void		parole_media_list_row_activated_cb 	(GtkTreeView *view, 
-							 GtkTreePath *path,
-							 GtkTreeViewColumn *col,
-							 ParoleMediaList *list);
-
-gboolean	parole_media_list_button_release_event  (GtkWidget *widget, 
-							 GdkEventButton *ev, 
-							 ParoleMediaList *list);
-							 
-void		parole_media_list_drag_data_received_cb (GtkWidget *widget,
-							 GdkDragContext *drag_context,
-							 gint x,
-							 gint y,
-							 GtkSelectionData *data,
-							 guint info,
-							 guint drag_time,
-							 ParoleMediaList *list);
-
-gboolean	parole_media_list_key_press		(GtkWidget *widget, 
-							 GdkEventKey *ev, 
-							 ParoleMediaList *list);
-
-void		parole_media_list_format_cursor_changed_cb (GtkTreeView *view,
-							    ParolePlaylistSave *data);
-							    
-void		parole_media_list_close_save_dialog_cb (GtkButton *button,
-						        ParolePlaylistSave *data);
-						    
-void		parole_media_list_save_playlist_cb     (GtkButton *button,
-						        ParolePlaylistSave *data);
-/*
- * End of GtkBuilder callbacks
- */
-
-#define PAROLE_MEDIA_LIST_GET_PRIVATE(o) \
-(G_TYPE_INSTANCE_GET_PRIVATE ((o), PAROLE_TYPE_MEDIA_LIST, ParoleMediaListPrivate))
-
-struct ParoleMediaListPrivate
-{
-    GtkWidget 	  	*view;
-    GtkWidget		*box;
-    GtkListStore	*store;
-    GtkTreeSelection    *sel;
-    
-    GtkWidget		*remove;
-    GtkWidget		*up;
-    GtkWidget		*down;
-    GtkWidget		*save;
-};
-
-enum
-{
-    MEDIA_ACTIVATED,
-    MEDIA_CURSOR_CHANGED,
-    URI_OPENED,
-    LAST_SIGNAL
-};
-
-static guint signals [LAST_SIGNAL] = { 0 };
-
-G_DEFINE_TYPE (ParoleMediaList, parole_media_list, GTK_TYPE_VBOX)
-
-static void
-parole_media_list_set_widget_sensitive (ParoleMediaList *list, gboolean sensitive)
-{
-    gtk_widget_set_sensitive (GTK_WIDGET (list->priv->up), sensitive);
-    gtk_widget_set_sensitive (GTK_WIDGET (list->priv->remove), sensitive);
-    gtk_widget_set_sensitive (GTK_WIDGET (list->priv->down), sensitive);
-    gtk_widget_set_sensitive (GTK_WIDGET (list->priv->save), sensitive);
-}
-
-static void
-parole_media_list_add (ParoleMediaList *list, ParoleFile *file, gboolean emit, gboolean select_row)
-{
-    GtkListStore *list_store;
-    GtkTreePath *path;
-    GtkTreeRowReference *row;
-    GtkTreeIter iter;
-    gint nch;
-    
-    list_store = GTK_LIST_STORE (gtk_tree_view_get_model (GTK_TREE_VIEW (list->priv->view)));
-    
-    gtk_list_store_append (list_store, &iter);
-    
-    gtk_list_store_set (list_store, 
-			&iter, 
-			NAME_COL, parole_file_get_display_name (file),
-			DATA_COL, file,
-			-1);
-    
-    if ( emit )
-    {
-	path = gtk_tree_model_get_path (GTK_TREE_MODEL (list_store), &iter);
-	row = gtk_tree_row_reference_new (GTK_TREE_MODEL (list_store), path);
-	gtk_tree_path_free (path);
-	g_signal_emit (G_OBJECT (list), signals [MEDIA_ACTIVATED], 0, row);
-	gtk_tree_row_reference_free (row);
-    }
-  
-    if ( select_row )
-    {
-	path = gtk_tree_model_get_path (GTK_TREE_MODEL (list_store), &iter);
-	parole_media_list_select_path (list, path);
-	gtk_tree_path_free (path);
-    }
-    
-    /*
-     * Unref it as the list store will have
-     * a reference anyway.
-     */
-    g_object_unref (file);
-    
-    nch = gtk_tree_model_iter_n_children (GTK_TREE_MODEL (list->priv->store), NULL); 
-    
-    if ( nch == 1 )
-    {
-	gtk_widget_set_sensitive (list->priv->up, FALSE);
-	gtk_widget_set_sensitive (list->priv->down, FALSE);
-	gtk_widget_set_sensitive (list->priv->save, TRUE);
-	gtk_widget_set_sensitive (list->priv->remove, TRUE);
-    }
-    else
-	parole_media_list_set_widget_sensitive (list, TRUE);
-	
-}
-
-static void
-parole_media_list_files_opened_cb (ParoleMediaChooser *chooser, gboolean replace,
-				   GSList *files, ParoleMediaList *list)
-{
-    ParoleFile *file;
-    guint len;
-    guint i;
-    
-    len = g_slist_length (files);
-    TRACE ("Adding files");
-    
-    if ( len != 0 )
-    {
-	parole_media_list_clear_list (list);
-	file = g_slist_nth_data (files, 0);
-	parole_media_list_add (list, file, TRUE, TRUE);
-    }
-    
-    for ( i = 1; i < len; i++)
-    {
-	file = g_slist_nth_data (files, i);
-	parole_media_list_add (list, file, FALSE, FALSE);
-    }
-}
-
-static void
-parole_media_list_location_opened_cb (ParoleOpenLocation *obj, const gchar *location, ParoleMediaList *list)
-{
-    ParoleFile *file;
-    
-    if ( parole_is_uri_disc (location) )
-    {
-	g_signal_emit (G_OBJECT (list), signals [URI_OPENED], 0, location);
-    }
-    else
-    {
-	file = parole_file_new (location);
-	parole_media_list_add (list, file, TRUE, TRUE);
-    }
-}
-
-static void
-parole_media_list_open_internal (ParoleMediaList *list)
-{
-    GtkWidget *chooser;
-    
-    chooser = parole_media_chooser_open_local (gtk_widget_get_toplevel (GTK_WIDGET (list)));
-					       
-    g_signal_connect (G_OBJECT (chooser), "media_files_opened",
-		      G_CALLBACK (parole_media_list_files_opened_cb), list);
-    
-    gtk_widget_show_all (GTK_WIDGET (chooser));
-}
-
-static void
-parole_media_list_open_location_internal (ParoleMediaList *list)
-{
-    GtkWidget *location;
-    
-    location = parole_open_location (gtk_widget_get_toplevel (GTK_WIDGET (list)));
-					       
-    g_signal_connect (G_OBJECT (location), "location-opened",
-		          G_CALLBACK (parole_media_list_location_opened_cb), list);
-    
-    gtk_widget_show_all (GTK_WIDGET (location));
-}
-
-static GSList *
-parole_media_list_get_files (ParoleMediaList *list)
-{
-    ParoleFile *file;
-    GtkTreeIter iter;
-    gboolean valid;
-    GSList *files_list = NULL;
-    
-    for ( valid = gtk_tree_model_get_iter_first (GTK_TREE_MODEL (list->priv->store), &iter);
-	  valid;
-	  valid = gtk_tree_model_iter_next (GTK_TREE_MODEL (list->priv->store), &iter))
-    {
-	gtk_tree_model_get (GTK_TREE_MODEL (list->priv->store), &iter,
-			    DATA_COL, &file,
-			    -1);
-	
-	files_list = g_slist_append (files_list, file);
-    }
-    
-    return files_list;
-}
-
-void	parole_media_list_drag_data_received_cb (GtkWidget *widget,
-						 GdkDragContext *drag_context,
-						 gint x,
-						 gint y,
-						 GtkSelectionData *data,
-						 guint info,
-						 guint drag_time,
-						 ParoleMediaList *list)
-{
-    gchar **uri_list;
-    gchar *path;
-    guint i;
-    guint added = 0;
-    
-    parole_window_busy_cursor (GTK_WIDGET (list)->window);
-    
-    uri_list = g_uri_list_extract_uris ((const gchar *)data->data);
-    
-    for ( i = 0; uri_list[i] != NULL; i++)
-    {
-	path = g_filename_from_uri (uri_list[i], NULL, NULL);
-	added += parole_media_list_add_by_path (list, path, i == 0 ? TRUE : FALSE);
-
-	g_free (path);
-    }
-
-    g_strfreev (uri_list);
-
-    gdk_window_set_cursor (GTK_WIDGET (list)->window, NULL);
-    gtk_drag_finish (drag_context, added == i ? TRUE : FALSE, FALSE, drag_time);
-}
-
-gboolean parole_media_list_key_press (GtkWidget *widget, GdkEventKey *ev, ParoleMediaList *list)
-{
-    if ( ev->keyval == GDK_Delete )
-    {
-	parole_media_list_remove_clicked_cb (NULL, list);
-	return TRUE;
-    }
-    return FALSE;
-}
-
-void
-parole_media_list_add_clicked_cb (GtkButton *button, ParoleMediaList *list)
-{
-    parole_media_list_open_internal (list);
-}
-
-void parole_media_list_close_save_dialog_cb (GtkButton *button, ParolePlaylistSave *data)
-{
-    gtk_widget_destroy (GTK_WIDGET (data->chooser));
-    g_free (data);
-}
-
-static GtkTreeRowReference *
-parole_media_list_get_first_selected_row (ParoleMediaList *list)
-{
-    GtkTreeModel *model;
-    GtkTreeRowReference *row = NULL;
-    GtkTreeIter iter;
-    GList *path_list = NULL;
-    
-    path_list = gtk_tree_selection_get_selected_rows (list->priv->sel, &model);
-    
-    if ( g_list_length (path_list) > 0 )
-    {
-	GtkTreePath *path;
-	path = g_list_nth_data (path_list, 0);
-	
-	if ( G_LIKELY (gtk_tree_model_get_iter (model, &iter, path) == TRUE ))
-	{
-	    row = parole_media_list_get_row_reference_from_iter (list, &iter, FALSE);
-	}
-    }
-    
-    g_list_foreach (path_list, (GFunc)gtk_tree_path_free, NULL);
-    g_list_free (path_list);
-    
-    return row;
-}
-
-void parole_media_list_save_playlist_cb (GtkButton *button, ParolePlaylistSave *data)
-{
-    ParolePlFormat format = PAROLE_PL_FORMAT_UNKNOWN;
-    GSList *list = NULL;
-    GtkTreeModel *model;
-    GtkTreeIter iter;
-    gchar *filename;
-    gchar *dirname;
-    
-    filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (data->chooser));
-    dirname = g_path_get_dirname (filename);
-    
-    if ( gtk_tree_selection_get_selected (data->sel, &model, &iter ) )
-    {
-	gtk_tree_model_get (model, &iter, 2, &format, -1);
-    }
-    
-    if ( g_access (dirname, W_OK) == -1 )
-    {
-	xfce_err ("%s %s %s", _("Error saving playlist file"), dirname, _("Permission denied"));
-	goto out;
-    }
-    
-    if ( format == PAROLE_PL_FORMAT_UNKNOWN )
-    {
-	format = parole_pl_parser_guess_format_from_extension (filename);
-	if ( format == PAROLE_PL_FORMAT_UNKNOWN )
-	{
-	    xfce_info ("%s", _("Unknown playlist format, Please select a support playlist format"));
-	    goto out;
-	}
-    }
-    
-    list = parole_media_list_get_files (data->list);
-    
-    parole_media_list_close_save_dialog_cb (NULL, data);
-    
-    parole_pl_parser_save_file (list, filename, format);
-    g_slist_free (list);
-out:
-    g_free (filename);
-    g_free (dirname);
-}
-
-void parole_media_list_format_cursor_changed_cb (GtkTreeView *view, ParolePlaylistSave *data)
-{
-    GtkTreeIter iter;
-    GtkTreeModel *model;
-    ParolePlFormat format;
-    gchar *filename;
-    gchar *fbasename;
-    
-    filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (data->chooser));
-    fbasename = g_path_get_basename (filename);
-    
-    g_free (filename);
-    
-    if ( gtk_tree_selection_get_selected (data->sel, &model, &iter ) )
-    {
-	gtk_tree_model_get (model, &iter, 2, &format, -1);
-	if ( format != PAROLE_PL_FORMAT_UNKNOWN )
-	{
-	    gchar *name, *new_name;
-	    name = parole_get_name_without_extension (fbasename);
-	    new_name = g_strdup_printf ("%s%s", name, playlist_format_map[format].ext);
-	    gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (data->chooser), new_name);
-	    g_free (new_name);
-	    g_free (name);
-	}
-    }
-    g_free (fbasename);
-    
-}
-
-void parole_media_list_save_cb (GtkButton *button, ParoleMediaList *list)
-{
-    ParolePlaylistSave *data;
-    GtkWidget *chooser;
-    GtkWidget *view;
-    GtkListStore *store;
-    GtkBuilder *builder;
-    gchar *filename;
-    GtkTreeIter iter;
-    
-    data = g_new0 (ParolePlaylistSave, 1);
-    
-    builder = parole_builder_new_from_string (save_playlist_ui, save_playlist_ui_length);
-    
-    chooser = GTK_WIDGET (gtk_builder_get_object (builder, "filechooserdialog"));
-    store = GTK_LIST_STORE (gtk_builder_get_object (builder, "liststore"));
-
-    gtk_window_set_transient_for (GTK_WINDOW (chooser), 
-				  GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (list))));
-				  
-    gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (chooser), TRUE);
-	
-    filename = g_strconcat (_("Playlist"), ".m3u", NULL);
-    gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (chooser), filename);
-    g_free (filename);
-    
-    gtk_list_store_append (store, &iter);
-    gtk_list_store_set (store, 
-			&iter, 
-			0, _("M3U Playlists"),
-			1, "m3u",
-			2, PAROLE_PL_FORMAT_M3U,
-			-1);
-			
-    gtk_list_store_append (store, &iter);
-    gtk_list_store_set (store, 
-			&iter, 
-			0, _("PLS Playlists"),
-			1, "pls",
-			2, PAROLE_PL_FORMAT_PLS,
-			-1);
-			
-    gtk_list_store_append (store, &iter);
-    gtk_list_store_set (store, 
-			&iter, 
-			0, _("Advanced Stream Redirector"),
-			1, "asx",
-			2, PAROLE_PL_FORMAT_ASX,
-			-1);
-			
-    gtk_list_store_append (store, &iter);
-    gtk_list_store_set (store, 
-			&iter, 
-			0, _("Shareable Playlist"),
-			1, "xspf",
-			2, PAROLE_PL_FORMAT_XSPF,
-			-1);
-
-    view = GTK_WIDGET (gtk_builder_get_object (builder, "treeview"));
-    
-    data->chooser = chooser;
-    data->sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (view));
-    data->list = list;
-
-    gtk_builder_connect_signals (builder, data);
-    gtk_widget_show_all (chooser);
-    g_object_unref (builder);
-}
-
-static GList *
-parole_media_list_path_to_row_list (GList *path_list, GtkTreeModel *model)
-{
-    GList *row_list = NULL;
-    guint len, i;
-    
-    len = g_list_length (path_list);
-    
-    for ( i = 0; i < len; i++)
-    {
-	GtkTreePath *path;
-	GtkTreeRowReference *row;
-	
-	path = g_list_nth_data (path_list, i);
-	
-	row = gtk_tree_row_reference_new (model, path);
-	path = gtk_tree_row_reference_get_path (row);
-	row_list = g_list_append (row_list, row);
-    }
-    
-    return row_list;
-}
-
-void
-parole_media_list_remove_clicked_cb (GtkButton *button, ParoleMediaList *list)
-{
-    GtkTreeModel *model;
-    GList *path_list = NULL;
-    GList *row_list = NULL;
-    GtkTreeIter iter;
-    gint nch;
-    guint len, i;
-    
-    path_list = gtk_tree_selection_get_selected_rows (list->priv->sel, &model);
-	
-    row_list = parole_media_list_path_to_row_list (path_list, model);
-    
-    g_list_foreach (path_list, (GFunc) gtk_tree_path_free, NULL);
-    g_list_free (path_list);
-    
-    len = g_list_length (row_list);
-    
-    for ( i = 0; i < len; i++)
-    {
-	GtkTreePath *path;
-	GtkTreeRowReference *row;
-	row = g_list_nth_data (row_list, i);
-	path = gtk_tree_row_reference_get_path (row);
-    
-	if ( G_LIKELY (gtk_tree_model_get_iter (model, &iter, path) == TRUE ) )
-	{
-	    gtk_list_store_remove (GTK_LIST_STORE (model),
-				   &iter);
-	}
-    }
-    
-    g_list_foreach (row_list, (GFunc) gtk_tree_row_reference_free, NULL);
-    g_list_free (row_list);
-    
-    /*
-     * Returns the number of children that iter has. 
-     * As a special case, if iter is NULL, 
-     * then the number of toplevel nodes is returned. Gtk API doc.
-     */
-    nch = gtk_tree_model_iter_n_children (GTK_TREE_MODEL (list->priv->store), NULL); 
-    
-    if ( nch == 0)
-    {
-	parole_media_list_set_widget_sensitive (list, FALSE);
-	/*
-	 * Will emit the signal media_cursor_changed with FALSE because there is no any 
-	 * row remaining, so the player can disable click on the play button.
-	 */
-	g_signal_emit (G_OBJECT (list), signals [MEDIA_CURSOR_CHANGED], 0, FALSE);
-    }
-    else if ( nch == 1 )
-    {
-	gtk_widget_set_sensitive (list->priv->up, FALSE);
-	gtk_widget_set_sensitive (list->priv->down, FALSE);
-    }
-}
-
-static void
-parole_media_list_move_one_down (GtkListStore *store, GtkTreeIter *iter)
-{
-    GtkTreeIter *pos_iter;
-    
-    /* Save the selected iter to the selected row */
-    pos_iter = gtk_tree_iter_copy (iter);
-
-    /* We are on the last node in the list!*/
-    if ( !gtk_tree_model_iter_next (GTK_TREE_MODEL (store), iter) )
-    {
-	/* Return false if tree is empty*/
-	if (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (store), iter))
-	{
-	    gtk_list_store_move_before (GTK_LIST_STORE (store), pos_iter, iter);
-	}
-    }
-    else
-    {
-	gtk_list_store_move_after (GTK_LIST_STORE (store), pos_iter, iter);
-    }
-    
-    gtk_tree_iter_free (pos_iter);
-}
-
-static void
-parole_media_list_move_many_down (GList *path_list, GtkTreeModel *model)
-{
-    GList *row_list = NULL;
-    GtkTreeIter iter;
-    guint len;
-    guint i;
-    
-    row_list = parole_media_list_path_to_row_list (path_list, model);
-    
-    len = g_list_length (row_list);
-    
-    for ( i = 0; i < len; i++)
-    {
-	GtkTreeRowReference *row;
-	GtkTreePath *path;
-	
-	row = g_list_nth_data (row_list, i);
-	
-	path = gtk_tree_row_reference_get_path (row);
-	
-	if ( G_LIKELY (gtk_tree_model_get_iter (model, &iter, path) ) )
-	{
-	    parole_media_list_move_one_down (GTK_LIST_STORE (model), &iter);
-	}
-    }
-    
-    g_list_foreach (row_list, (GFunc) gtk_tree_row_reference_free, NULL);
-    g_list_free (row_list);
-}
-
-void
-parole_media_list_media_down_clicked_cb (GtkButton *button, ParoleMediaList *list)
-{
-    GtkTreeIter iter;
-    GList *path_list = NULL;
-    GtkTreeModel *model;
-    guint len;
-    
-    path_list = gtk_tree_selection_get_selected_rows (list->priv->sel, &model);
-
-    len = g_list_length (path_list);
-
-    if ( len == 1 )
-    {
-	GtkTreePath *path;
-	path = g_list_nth_data (path_list, 0);
-	if ( G_LIKELY (gtk_tree_model_get_iter (model, &iter, path)) )
-	    parole_media_list_move_one_down (list->priv->store, &iter);
-    }
-    else
-    {
-	parole_media_list_move_many_down (path_list, model);
-    }
-    
-    g_list_foreach (path_list, (GFunc) gtk_tree_path_free, NULL);
-    g_list_free (path_list);
-}
-
-static void
-parole_media_list_move_one_up (GtkListStore *store, GtkTreeIter *iter)
-{
-    GtkTreePath *path;
-    GtkTreeIter *pos_iter;
-    
-    /* Save the selected iter to the selected row */
-    pos_iter = gtk_tree_iter_copy (iter);
-    
-    path = gtk_tree_model_get_path (GTK_TREE_MODEL (store), iter);
-    
-    /* We are on the top of the list */
-    if ( !gtk_tree_path_prev (path) )
-    {
-	/* Passing NULL as the last argument will cause this call to move 
-	 * the iter to the end of the list, Gtk API doc*/
-	gtk_list_store_move_before (GTK_LIST_STORE (store), iter, NULL);
-    }
-    else
-    {
-	if (gtk_tree_model_get_iter (GTK_TREE_MODEL (store), iter, path))
-	    gtk_list_store_move_before (GTK_LIST_STORE (store), pos_iter, iter);
-    }
-    
-    gtk_tree_path_free (path);
-    gtk_tree_iter_free (pos_iter);
-}
-
-static void
-parole_media_list_move_many_up (GList *path_list, GtkTreeModel *model)
-{
-    GList *row_list = NULL;
-    GtkTreeIter iter;
-    guint len;
-    guint i;
-    
-    row_list = parole_media_list_path_to_row_list (path_list, model);
-    
-    len = g_list_length (row_list);
-    
-    for ( i = 0; i < len; i++)
-    {
-	GtkTreeRowReference *row;
-	GtkTreePath *path;
-	
-	row = g_list_nth_data (row_list, i);
-	
-	path = gtk_tree_row_reference_get_path (row);
-	
-	if ( G_LIKELY (gtk_tree_model_get_iter (model, &iter, path) ) )
-	{
-	    parole_media_list_move_one_up (GTK_LIST_STORE (model), &iter);
-	}
-    }
-    
-    g_list_foreach (row_list, (GFunc) gtk_tree_row_reference_free, NULL);
-    g_list_free (row_list);
-}
-
-void
-parole_media_list_media_up_clicked_cb (GtkButton *button, ParoleMediaList *list)
-{
-    GtkTreeIter iter;
-    GList *path_list = NULL;
-    GtkTreeModel *model;
-    guint len;
-    
-    path_list = gtk_tree_selection_get_selected_rows (list->priv->sel, &model);
-
-    len = g_list_length (path_list);
-
-    if ( len == 1 )
-    {
-	GtkTreePath *path;
-	path = g_list_nth_data (path_list, 0);
-	if ( G_LIKELY (gtk_tree_model_get_iter (model, &iter, path)) )
-	    parole_media_list_move_one_up (list->priv->store, &iter);
-    }
-    else
-    {
-	parole_media_list_move_many_up (path_list, model);
-    }
-    
-    g_list_foreach (path_list, (GFunc) gtk_tree_path_free, NULL);
-    g_list_free (path_list);
-}
-
-void
-parole_media_list_row_activated_cb (GtkTreeView *view, GtkTreePath *path, 
-				    GtkTreeViewColumn *col, ParoleMediaList *list)
-{
-    GtkTreeModel *model;
-    GtkTreeRowReference *row;
-    
-    model = gtk_tree_view_get_model (GTK_TREE_VIEW (list->priv->view));
-
-    row = gtk_tree_row_reference_new (gtk_tree_view_get_model (GTK_TREE_VIEW (list->priv->view)), 
-				      path);
-				      
-    g_signal_emit (G_OBJECT (list), signals [MEDIA_ACTIVATED], 0, row);
-}
-
-static void
-parole_media_list_selection_changed_cb (GtkTreeSelection *sel, ParoleMediaList *list)
-{
-    g_signal_emit (G_OBJECT (list), signals [MEDIA_CURSOR_CHANGED], 0,
-		   gtk_tree_selection_count_selected_rows (sel) > 0); 
-}
-
-static void
-parole_media_list_clear_list (ParoleMediaList *list)
-{
-    gtk_list_store_clear (GTK_LIST_STORE (list->priv->store));
-    parole_media_list_set_widget_sensitive (list, FALSE);
-}
-
-static void
-save_list_activated_cb (GtkWidget *mi)
-{
-    gboolean active;
-    
-    active = gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (mi));
-    
-    parole_rc_write_entry_bool ("SAVE_LIST_ON_EXIT", PAROLE_RC_GROUP_GENERAL, active);
-}
-
-static void
-parole_media_list_show_menu (ParoleMediaList *list, guint button, guint activate_time)
-{
-    GtkWidget *menu, *mi;
-
-    menu = gtk_menu_new ();
-    
-    mi = gtk_check_menu_item_new_with_label (_("Remember playlist"));
-    gtk_widget_set_sensitive (mi, TRUE);
-    gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (mi),
-				    parole_rc_read_entry_bool ("SAVE_LIST_ON_EXIT", 
-							        PAROLE_RC_GROUP_GENERAL, 
-								FALSE));
-    g_signal_connect (mi, "activate",
-                      G_CALLBACK (save_list_activated_cb), NULL);
-			      
-    gtk_menu_shell_append (GTK_MENU_SHELL (menu), mi);
-    
-    gtk_widget_show (mi);
-    
-    mi = gtk_separator_menu_item_new ();
-    gtk_widget_show (mi);
-    gtk_menu_shell_append (GTK_MENU_SHELL (menu), mi);
-    
-    
-    /* Clear */
-    mi = gtk_image_menu_item_new_from_stock (GTK_STOCK_CLEAR, NULL);
-    gtk_widget_set_sensitive (mi, TRUE);
-    gtk_widget_show (mi);
-    g_signal_connect_swapped (mi, "activate",
-                              G_CALLBACK (parole_media_list_clear_list), list);
-			      
-    gtk_menu_shell_append (GTK_MENU_SHELL (menu), mi);
-    
-    g_signal_connect_swapped (menu, "selection-done",
-                              G_CALLBACK (gtk_widget_destroy), menu);
-    
-    gtk_menu_popup (GTK_MENU (menu), 
-                    NULL, NULL,
-                    NULL, NULL,
-                    button, activate_time);
-}
-
-gboolean
-parole_media_list_button_release_event (GtkWidget *widget, GdkEventButton *ev, ParoleMediaList *list)
-{
-    if ( ev->button == 3 )
-    {
-	parole_media_list_show_menu (list, ev->button, ev->time);
-	return TRUE;
-    }
-    
-    return FALSE;
-}
-
-static void
-parole_media_list_select_path (ParoleMediaList *list, GtkTreePath *path)
-{
-    gtk_tree_selection_select_path (list->priv->sel, path);
-    gtk_tree_view_set_cursor (GTK_TREE_VIEW (list->priv->view), path, NULL, FALSE);
-}
-
-static GtkTreeRowReference *
-parole_media_list_get_row_reference_from_iter (ParoleMediaList *list, GtkTreeIter *iter, gboolean select_path)
-{
-    GtkTreePath *path;
-    GtkTreeRowReference *row;
-    
-    path = gtk_tree_model_get_path (GTK_TREE_MODEL (list->priv->store), iter);
-    row = gtk_tree_row_reference_new (GTK_TREE_MODEL (list->priv->store), path);
-    
-    if ( select_path)
-	parole_media_list_select_path (list, path);
-    
-    gtk_tree_path_free (path);
-    
-    return row;
-}
-
-static void
-parole_media_list_finalize (GObject *object)
-{
-    ParoleMediaList *list;
-
-    list = PAROLE_MEDIA_LIST (object);
-
-    G_OBJECT_CLASS (parole_media_list_parent_class)->finalize (object);
-}
-
-static void
-parole_media_list_class_init (ParoleMediaListClass *klass)
-{
-    GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
-    object_class->finalize = parole_media_list_finalize;
-    
-    signals[MEDIA_ACTIVATED] = 
-        g_signal_new ("media-activated",
-                      PAROLE_TYPE_MEDIA_LIST,
-                      G_SIGNAL_RUN_LAST,
-                      G_STRUCT_OFFSET (ParoleMediaListClass, media_activated),
-                      NULL, NULL,
-                      g_cclosure_marshal_VOID__POINTER,
-                      G_TYPE_NONE, 1, G_TYPE_POINTER);
-
-    signals[MEDIA_CURSOR_CHANGED] = 
-        g_signal_new ("media-cursor-changed",
-                      PAROLE_TYPE_MEDIA_LIST,
-                      G_SIGNAL_RUN_LAST,
-                      G_STRUCT_OFFSET (ParoleMediaListClass, media_cursor_changed),
-                      NULL, NULL,
-                      g_cclosure_marshal_VOID__BOOLEAN,
-                      G_TYPE_NONE, 1, G_TYPE_BOOLEAN);
-
-    signals[URI_OPENED] = 
-        g_signal_new ("uri-opened",
-                      PAROLE_TYPE_MEDIA_LIST,
-                      G_SIGNAL_RUN_LAST,
-                      G_STRUCT_OFFSET (ParoleMediaListClass, uri_opened),
-                      NULL, NULL,
-                      g_cclosure_marshal_VOID__STRING,
-                      G_TYPE_NONE, 1, G_TYPE_STRING);
-
-    g_type_class_add_private (klass, sizeof (ParoleMediaListPrivate));
-    
-    parole_media_list_dbus_class_init (klass);
-}
-
-static void
-parole_media_list_setup_view (ParoleMediaList *list)
-{
-    GtkTreeSelection *sel;
-    GtkListStore *list_store;
-    GtkTreeViewColumn *col;
-    GtkCellRenderer *renderer;
-
-    list_store = gtk_list_store_new (COL_NUMBERS, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_OBJECT);
-
-    gtk_tree_view_set_model (GTK_TREE_VIEW (list->priv->view), GTK_TREE_MODEL(list_store));
-    
-    gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (list->priv->view), TRUE);
-    col = gtk_tree_view_column_new ();
-
-    renderer = gtk_cell_renderer_pixbuf_new ();
-    
-    gtk_tree_view_column_pack_start(col, renderer, FALSE);
-    gtk_tree_view_column_set_attributes(col, renderer, "pixbuf", PIXBUF_COL, NULL);
-
-    renderer = gtk_cell_renderer_text_new();
-    
-    gtk_tree_view_column_pack_start (col, renderer, TRUE);
-    gtk_tree_view_column_set_attributes (col, renderer, "text", NAME_COL, NULL);
-    g_object_set (renderer, 
-		  "ellipsize", PANGO_ELLIPSIZE_END, 
-		  NULL);
-    
-    gtk_tree_view_append_column (GTK_TREE_VIEW (list->priv->view), col);
-    gtk_tree_view_column_set_title (col, _("Media list"));
-
-    gtk_drag_dest_set (list->priv->view, GTK_DEST_DEFAULT_ALL, target_entry, G_N_ELEMENTS (target_entry),
-                       GDK_ACTION_COPY | GDK_ACTION_MOVE);
-    
-    list->priv->sel = sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (list->priv->view));
-    gtk_tree_selection_set_mode (sel, GTK_SELECTION_MULTIPLE);
-    
-    g_signal_connect (sel, "changed",
-		      G_CALLBACK (parole_media_list_selection_changed_cb), list);
-    
-    list->priv->store = list_store;
-}
-
-static void
-parole_media_list_init (ParoleMediaList *list)
-{
-    GtkBuilder *builder;
-    GtkWidget  *box;
-    
-    list->priv = PAROLE_MEDIA_LIST_GET_PRIVATE (list);
-    
-    builder = parole_builder_new_from_string (playlist_ui, playlist_ui_length);
-    
-    list->priv->view = GTK_WIDGET (gtk_builder_get_object (builder, "media-list"));
-    
-    box = GTK_WIDGET (gtk_builder_get_object (builder, "playlist-box"));
-    
-    parole_media_list_setup_view (list);
-    
-    gtk_builder_connect_signals (builder, list);
-
-    gtk_box_pack_start (GTK_BOX (list), box, TRUE, TRUE, 0);
-
-    list->priv->up = GTK_WIDGET (gtk_builder_get_object (builder, "media-up"));
-    list->priv->down = GTK_WIDGET (gtk_builder_get_object (builder, "media-down"));
-    list->priv->remove = GTK_WIDGET (gtk_builder_get_object (builder, "remove-media"));
-    list->priv->save = GTK_WIDGET (gtk_builder_get_object (builder, "save-playlist"));
-
-    g_object_unref (builder);
-    
-    gtk_widget_show_all (GTK_WIDGET (list));
-    
-    parole_media_list_dbus_init (list);
-}
-
-GtkWidget *
-parole_media_list_new (void)
-{
-    static gpointer list = NULL;
-    
-    if ( G_LIKELY (list != NULL ) )
-    {
-	g_object_ref (list);
-    }
-    else
-    {
-	list = g_object_new (PAROLE_TYPE_MEDIA_LIST, NULL);
-	g_object_add_weak_pointer (list, &list);
-    }
-    
-    return GTK_WIDGET (list);
-}
-
-void parole_media_list_load (ParoleMediaList *list)
-{
-    gboolean    load_saved_list;
-    GSList     *fileslist = NULL;
-    
-    load_saved_list = parole_rc_read_entry_bool ("SAVE_LIST_ON_EXIT", PAROLE_RC_GROUP_GENERAL, FALSE);
-    
-    if ( load_saved_list )
-    {
-	gchar *playlist_file;
-	
-	playlist_file = xfce_resource_save_location (XFCE_RESOURCE_DATA, 
-			 		             PAROLE_AUTO_SAVED_PLAYLIST, 
-						     FALSE);
-	if ( playlist_file )
-	{
-	    fileslist = parole_pl_parser_load_file (playlist_file);
-	    g_free (playlist_file);
-	    
-	    parole_media_list_files_opened_cb (NULL, FALSE, fileslist, list);
-	    g_slist_free (fileslist);
-	}
-    }
-    
-}
-
-gboolean
-parole_media_list_add_by_path (ParoleMediaList *list, const gchar *path, gboolean emit)
-{
-    GSList *file_list = NULL;
-    GtkFileFilter *filter;
-    guint len;
-    gboolean ret = FALSE;
-    
-    filter = parole_get_supported_media_filter ();
-    g_object_ref_sink (filter);
-    
-    parole_get_media_files (filter, path, TRUE, &file_list);
-    
-    parole_media_list_files_opened_cb (NULL, FALSE, file_list, list);
-    len = g_slist_length (file_list);
-    ret = len == 0 ? FALSE : TRUE;
-    
-    g_object_unref (filter);
-    g_slist_free (file_list);
-    return ret;
-}
-
-GtkTreeRowReference *parole_media_list_get_next_row (ParoleMediaList *list, 
-						     GtkTreeRowReference *row,
-						     gboolean repeat)
-{
-    GtkTreeRowReference *next = NULL;
-    GtkTreePath *path;
-    GtkTreeIter iter;
-    
-    g_return_val_if_fail (row != NULL, NULL);
-
-    if ( !gtk_tree_row_reference_valid (row) )
-	return NULL;
-    
-    path = gtk_tree_row_reference_get_path (row);
-    
-    gtk_tree_path_next (path);
-    
-    if ( gtk_tree_model_get_iter (GTK_TREE_MODEL (list->priv->store), &iter, path))
-    {
-	next = gtk_tree_row_reference_new (GTK_TREE_MODEL (list->priv->store), path);
-	parole_media_list_select_path (list, path);
-    }
-    else if ( repeat ) /* Repeat playing ?*/
-    {
-	if ( gtk_tree_model_get_iter_first (GTK_TREE_MODEL (list->priv->store), &iter))
-	{
-	    next =  parole_media_list_get_row_reference_from_iter (list, &iter, TRUE);
-	}
-    }
-    
-    gtk_tree_path_free (path);
-    
-    return next;
-}
-
-GtkTreeRowReference *parole_media_list_get_prev_row (ParoleMediaList *list,
-						     GtkTreeRowReference *row)
-{
-    GtkTreeRowReference *prev = NULL;
-    GtkTreePath *path;
-    GtkTreeIter iter;
-    
-    g_return_val_if_fail (row != NULL, NULL);
-
-    if ( !gtk_tree_row_reference_valid (row) )
-	return NULL;
-    
-    path = gtk_tree_row_reference_get_path (row);
-    
-    gtk_tree_path_prev (path);
-    
-    if ( gtk_tree_model_get_iter (GTK_TREE_MODEL (list->priv->store), &iter, path))
-    {
-	prev = gtk_tree_row_reference_new (GTK_TREE_MODEL (list->priv->store), path);
-	parole_media_list_select_path (list, path);
-    }
-    else
-	prev = row;
-    
-    gtk_tree_path_free (path);
-    
-    return prev;
-}
-
-GtkTreeRowReference *parole_media_list_get_row_random (ParoleMediaList *list)
-{
-    GtkTreeRowReference *row = NULL;
-    GtkTreeIter iter;
-    GtkTreePath *path;
-    gchar *path_str;
-    gint nch;
-
-    nch = gtk_tree_model_iter_n_children (GTK_TREE_MODEL (list->priv->store), NULL);
-    
-    if ( nch == 1 || nch == 0 )
-    {
-	return  NULL;
-    }
-    
-    path_str = g_strdup_printf ("%i", g_random_int_range (0, nch));
-    
-    path = gtk_tree_path_new_from_string (path_str);
-    g_free (path_str);
-    
-    if ( gtk_tree_model_get_iter (GTK_TREE_MODEL (list->priv->store), &iter, path))
-    {
-	row  = gtk_tree_row_reference_new (GTK_TREE_MODEL (list->priv->store), path);
-	parole_media_list_select_path (list, path);
-    }
-    
-    gtk_tree_path_free (path);
-    
-    return row;
-}
-
-gboolean parole_media_list_is_selected_row  (ParoleMediaList *list)
-{
-    return gtk_tree_selection_count_selected_rows (list->priv->sel) > 0;
-}
-
-gboolean parole_media_list_is_empty (ParoleMediaList *list)
-{
-    GtkTreeIter iter;
-    
-    return !gtk_tree_model_get_iter_first (GTK_TREE_MODEL (list->priv->store), &iter);
-}
-
-GtkTreeRowReference *parole_media_list_get_first_row (ParoleMediaList *list)
-{
-    GtkTreeRowReference *row = NULL;
-    GtkTreeIter iter;
-    
-    if ( gtk_tree_model_get_iter_first (GTK_TREE_MODEL (list->priv->store), &iter) )
-    {
-	row = parole_media_list_get_row_reference_from_iter (list, &iter, TRUE);
-    }
-    
-    return row;
-}
-
-GtkTreeRowReference *parole_media_list_get_selected_row (ParoleMediaList *list)
-{
-    return parole_media_list_get_first_selected_row (list);
-}
-
-void parole_media_list_set_row_pixbuf  (ParoleMediaList *list, GtkTreeRowReference *row, GdkPixbuf *pix)
-{
-    GtkTreeIter iter;
-    GtkTreePath *path;
-    
-    if ( gtk_tree_row_reference_valid (row) )
-    {
-	path = gtk_tree_row_reference_get_path (row);
-	
-	if ( gtk_tree_model_get_iter (GTK_TREE_MODEL (list->priv->store), &iter, path) )
-	{
-	    gtk_list_store_set (list->priv->store, &iter, PIXBUF_COL, pix, -1);
-	}
-	gtk_tree_path_free (path);
-    }
-}
-
-void parole_media_list_set_row_name (ParoleMediaList *list, GtkTreeRowReference *row, const gchar *name)
-{
-    GtkTreeIter iter;
-    GtkTreePath *path;
-    
-    if ( gtk_tree_row_reference_valid (row) )
-    {
-	path = gtk_tree_row_reference_get_path (row);
-	
-	if ( gtk_tree_model_get_iter (GTK_TREE_MODEL (list->priv->store), &iter, path) )
-	{
-	    gtk_list_store_set (list->priv->store, &iter, NAME_COL, name, -1);
-	}
-	gtk_tree_path_free (path);
-    }
-}
-
-void parole_media_list_open (ParoleMediaList *list)
-{
-    parole_media_list_open_internal (list);
-}
-
-void parole_media_list_open_location (ParoleMediaList *list)
-{
-    parole_media_list_open_location_internal (list);
-}
-
-gboolean parole_media_list_add_files (ParoleMediaList *list, gchar **filenames)
-{
-    guint i;
-    guint added = 0;
-    
-    for ( i = 0; filenames && filenames[i] != NULL; i++)
-    {
-	added += parole_media_list_add_by_path (list, filenames[i], i == 0 ? TRUE : FALSE);
-    }
-    
-    return added == i;
-}
-
-void parole_media_list_save_list (ParoleMediaList *list)
-{
-    gboolean save;
-    
-    save = parole_rc_read_entry_bool ("SAVE_LIST_ON_EXIT", PAROLE_RC_GROUP_GENERAL, FALSE);
-    
-    if ( save )
-    {
-	GSList *fileslist;
-	gchar *history;
-
-	history = xfce_resource_save_location (XFCE_RESOURCE_DATA, PAROLE_AUTO_SAVED_PLAYLIST , TRUE);
-	
-	if ( !history )
-	{
-	    g_warning ("Failed to save playlist");
-	    return;
-	}
-	
-	fileslist = parole_media_list_get_files (list);
-	if ( g_slist_length (fileslist) > 0 )
-	{
-	    parole_pl_parser_save_file (fileslist, history, PAROLE_PL_FORMAT_M3U);
-	    g_slist_foreach (fileslist, (GFunc) g_object_unref, NULL);
-	}
-	g_slist_free (fileslist);
-    }
-}
-
-static gboolean	 parole_media_list_dbus_add_files (ParoleMediaList *list,
-					           gchar **in_files,
-						   GError **error);
-
-static gboolean  parole_media_list_dbus_add_disc (ParoleMediaList *list,
-						  gchar *in_uri,
-						  GError **error);
-
-#include "org.parole.media.list.h"
-
-/*
- * DBus server implementation
- */
-static void 
-parole_media_list_dbus_class_init (ParoleMediaListClass *klass)
-{
-    dbus_g_object_type_install_info (G_TYPE_FROM_CLASS (klass),
-				     &dbus_glib_parole_media_list_object_info);
-}
-
-static void
-parole_media_list_dbus_init (ParoleMediaList *list)
-{
-    dbus_g_connection_register_g_object (parole_g_session_bus_get (),
-					 PAROLE_DBUS_PLAYLIST_PATH,
-					 G_OBJECT (list));
-}
-
-static gboolean	 parole_media_list_dbus_add_files (ParoleMediaList *list,
-						   gchar **in_files,
-						   GError **error)
-{
-    TRACE ("Adding files for DBus request");
-    gtk_window_present (GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (list))));
-    parole_media_list_add_files (list, in_files);
-    
-    return TRUE;
-}
-
-static gboolean  parole_media_list_dbus_add_disc (ParoleMediaList *list,
-						  gchar *in_uri,
-						  GError **error)
-{
-    TRACE ("uri : %s", in_uri);
-    
-    gtk_window_present (GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (list))));
-    
-    if ( parole_is_uri_disc (in_uri) )
-	g_signal_emit (G_OBJECT (list), signals [URI_OPENED], 0, in_uri);
-	
-    return TRUE;
-}
-
-void parole_media_list_grab_focus (ParoleMediaList *list)
-{
-    gtk_widget_grab_focus (list->priv->view);
-}
diff --git a/parole/parole-medialist.h b/parole/parole-medialist.h
deleted file mode 100644
index 17d7fb0..0000000
--- a/parole/parole-medialist.h
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#ifndef __PAROLE_MEDIA_LIST_H
-#define __PAROLE_MEDIA_LIST_H
-
-#include <gtk/gtk.h>
-
-G_BEGIN_DECLS
-
-#define PAROLE_TYPE_MEDIA_LIST        (parole_media_list_get_type () )
-#define PAROLE_MEDIA_LIST(o)          (G_TYPE_CHECK_INSTANCE_CAST ((o), PAROLE_TYPE_MEDIA_LIST, ParoleMediaList))
-#define PAROLE_IS_MEDIA_LIST(o)       (G_TYPE_CHECK_INSTANCE_TYPE ((o), PAROLE_TYPE_MEDIA_LIST))
-
-enum
-{
-    PIXBUF_COL,
-    NAME_COL,
-    DATA_COL,
-    COL_NUMBERS
-};
-
-typedef struct ParoleMediaListPrivate ParoleMediaListPrivate;
-
-typedef struct
-{
-    GtkVBox         		 parent;
-    
-    ParoleMediaListPrivate     	*priv;
-    
-} ParoleMediaList;
-
-typedef struct
-{
-    GtkVBoxClass  		 parent_class;
-    
-    void			(*media_activated)		    (ParoleMediaList *list,
-								     GtkTreeRowReference *row);
-								  
-    void			(*media_cursor_changed)		    (ParoleMediaList *list,
-								     gboolean media_selected);
-								     
-    void			(*uri_opened)			    (ParoleMediaList *list,
-								     const gchar *uri);
-    
-} ParoleMediaListClass;
-
-GType        			 parole_media_list_get_type         (void) G_GNUC_CONST;
-
-GtkWidget       		*parole_media_list_new              (void);
-
-void				 parole_media_list_load             (ParoleMediaList *list);
-
-
-gboolean			 parole_media_list_add_by_path      (ParoleMediaList *list, 
-								     const gchar *path, 
-								     gboolean emit);
-
-gboolean			 parole_media_list_is_selected_row  (ParoleMediaList *list);
-
-gboolean			 parole_media_list_is_empty	    (ParoleMediaList *list);
-
-GtkTreeRowReference             *parole_media_list_get_first_row    (ParoleMediaList *list);
-
-GtkTreeRowReference		*parole_media_list_get_selected_row (ParoleMediaList *list);
-
-GtkTreeRowReference             *parole_media_list_get_next_row     (ParoleMediaList *list,
-								     GtkTreeRowReference *row,
-								     gboolean repeat);
-
-GtkTreeRowReference             *parole_media_list_get_prev_row     (ParoleMediaList *list,
-								     GtkTreeRowReference *row);
-
-GtkTreeRowReference		*parole_media_list_get_row_random   (ParoleMediaList *list);
-
-void				 parole_media_list_set_row_pixbuf   (ParoleMediaList *list,
-								     GtkTreeRowReference *row,
-								     GdkPixbuf *pix);
-								     
-void				 parole_media_list_set_row_name     (ParoleMediaList *list,
-							             GtkTreeRowReference *row,
-								     const gchar *name);
-
-void				 parole_media_list_open		    (ParoleMediaList *list);
-
-void			         parole_media_list_open_location    (ParoleMediaList *list);
-
-gboolean			 parole_media_list_add_files        (ParoleMediaList *list,
-								     gchar **filenames);
-
-void				 parole_media_list_save_list	    (ParoleMediaList *list);
-
-void				 parole_media_list_grab_focus       (ParoleMediaList *list);
-
-G_END_DECLS
-
-#endif /* __PAROLE_MEDIA_LIST_H */
diff --git a/parole/parole-module.c b/parole/parole-module.c
deleted file mode 100644
index ecbc800..0000000
--- a/parole/parole-module.c
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "parole-module.h"
-
-G_DEFINE_TYPE (ParoleModule, parole_module, G_TYPE_TYPE_MODULE)
-
-static gboolean
-parole_module_load (GTypeModule *gtype_module)
-{
-    ParoleModule *module;
-    
-    module = PAROLE_MODULE (gtype_module);
-    
-    module->mod = g_module_open (gtype_module->name, G_MODULE_BIND_LOCAL);
-
-    if ( G_UNLIKELY (module->mod == NULL) )
-    {
-	g_critical ("Failed to load plugin : %s", g_module_error ());
-	return FALSE;
-    }
-    
-    if ( !g_module_symbol (module->mod, "parole_plugin_constructor", (gpointer) &module->constructor) || 
-         !g_module_symbol (module->mod, "parole_plugin_get_description", (gpointer) &module->get_plugin_description))
-    {
-	g_critical ("Plugin %s missing required symbols", gtype_module->name);
-	g_module_close (module->mod);
-	return FALSE;
-    }
-    
-    module->desc = (*module->get_plugin_description) ();
-    
-    return TRUE;
-}
-
-static void
-parole_module_unload (GTypeModule *gtype_module)
-{
-    ParoleModule *module;
-    
-    module = PAROLE_MODULE (gtype_module);
-
-    parole_module_set_active (module, FALSE);
-
-    g_module_close (module->mod);
-    module->constructor = NULL;
-    
-    if ( module->desc )
-    {
-	g_free (module->desc);
-    }
-}
-
-static void
-parole_module_class_init (ParoleModuleClass *klass)
-{
-    GTypeModuleClass *gtype_module_class = G_TYPE_MODULE_CLASS (klass);
-
-    gtype_module_class->load   = parole_module_load;
-    gtype_module_class->unload = parole_module_unload;
-}
-
-static void
-parole_module_init (ParoleModule *module)
-{
-    module->mod = NULL;
-    module->constructor = NULL;
-    module->get_plugin_description = NULL;
-    module->plugin = NULL;
-    module->desc = NULL;
-}
-
-ParoleModule *
-parole_module_new (const gchar *filename)
-{
-    ParoleModule *module = NULL;
-    
-    module = g_object_new (PAROLE_TYPE_MODULE, NULL);
-    
-    g_type_module_set_name (G_TYPE_MODULE (module), filename);
-    
-    return module;
-}
-
-void parole_module_set_active (ParoleModule *module, gboolean active)
-{
-    if ( active )
-    {
-	g_return_if_fail (module->constructor != NULL);
-	
-	module->plugin = (*module->constructor) ();
-    
-	module->enabled = TRUE;
-    }
-    else
-    {
-	if ( module->plugin ) 
-	{
-	    g_signal_emit_by_name (G_OBJECT (module->plugin), "free-data");
-	    g_object_unref (module->plugin);
-	    module->plugin = NULL;
-	}
-	module->enabled = FALSE;
-    }
-}
diff --git a/parole/parole-module.h b/parole/parole-module.h
deleted file mode 100644
index 3629489..0000000
--- a/parole/parole-module.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#ifndef __PAROLE_MODULE_H
-#define __PAROLE_MODULE_H
-
-#include <glib-object.h>
-
-#include "parole.h"
-#include "parole-plugin.h"
-
-G_BEGIN_DECLS
-
-#define PAROLE_TYPE_MODULE        (parole_module_get_type () )
-#define PAROLE_MODULE(o)          (G_TYPE_CHECK_INSTANCE_CAST ((o), PAROLE_TYPE_MODULE, ParoleModule))
-#define PAROLE_IS_MODULE(o)       (G_TYPE_CHECK_INSTANCE_TYPE ((o), PAROLE_TYPE_MODULE))
-
-typedef struct ParoleModulePrivate ParoleModulePrivate;
-
-typedef struct
-{
-    GTypeModule       	     parent;
-    
-    GModule		    *mod;
-    ParolePlugin            *plugin;
-    ParolePluginDesc        *desc;
-    gboolean		     enabled;
-    
-    ParolePlugin	   *(*constructor)		   (void);
-    
-    ParolePluginDesc	   *(*get_plugin_description)	   (void);
-    
-} ParoleModule;
-
-typedef struct
-{
-    GTypeModuleClass 	     parent_class;
-    
-} ParoleModuleClass;
-
-GType        		     parole_module_get_type        (void) G_GNUC_CONST;
-
-ParoleModule       	    *parole_module_new             (const gchar *filename);
-
-void			     parole_module_set_active      (ParoleModule *module,
-							    gboolean active);
-
-G_END_DECLS
-
-#endif /* __PAROLE_MODULE_H */
diff --git a/parole/parole-open-location.c b/parole/parole-open-location.c
deleted file mode 100644
index 4b0d955..0000000
--- a/parole/parole-open-location.c
+++ /dev/null
@@ -1,244 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <libxfce4util/libxfce4util.h>
-
-#include "parole-open-location.h"
-#include "parole-rc-utils.h"
-
-static void parole_open_location_finalize   (GObject *object);
-
-#define PAROLE_OPEN_LOCATION_GET_PRIVATE(o) \
-(G_TYPE_INSTANCE_GET_PRIVATE ((o), PAROLE_TYPE_OPEN_LOCATION, ParoleOpenLocationPrivate))
-
-struct ParoleOpenLocationPrivate
-{
-    GtkWidget *entry;
-};
-
-enum
-{
-    LOCATION_OPENED,
-    LAST_SIGNAL
-};
-
-enum
-{
-    COL_ADDRESS,
-    N_COLS
-};
-
-static guint signals [LAST_SIGNAL] = { 0 };
-
-G_DEFINE_TYPE (ParoleOpenLocation, parole_open_location, GTK_TYPE_DIALOG)
-
-static void
-parole_open_location_response_cb (GtkDialog *dialog, gint response_id, ParoleOpenLocation *self)
-{
-    const gchar *location;
-
-    if ( response_id == GTK_RESPONSE_OK )
-    {
-	location = gtk_entry_get_text (GTK_ENTRY (self->priv->entry));
-	
-	if ( !location || strlen (location) == 0)
-	    goto out;
-
-	TRACE ("Location %s", location);
-
-	gtk_widget_hide (GTK_WIDGET (self));
-	g_signal_emit (G_OBJECT (self), signals [LOCATION_OPENED], 0, location);
-    }
-
-    out:
-	gtk_widget_destroy (GTK_WIDGET (self));
-}
-
-static GtkTreeModel *
-parole_open_location_get_completion_model (void)
-{
-    GtkListStore *store;
-    GtkTreeIter iter;
-    gchar **lines = NULL;
-    guint i;
-    
-    store = gtk_list_store_new (N_COLS, GTK_TYPE_STRING);
-    
-    lines = parole_get_history ();
-    
-    if ( lines )
-    {
-	for ( i = 0; lines[i]; i++)
-	{
-	    gtk_list_store_append (store, &iter);
-	    gtk_list_store_set (store, &iter,
-				COL_ADDRESS, lines [i],
-				-1);
-	}
-	
-	g_strfreev (lines);
-    }
-    return GTK_TREE_MODEL (store);
-}
-
-static gboolean
-parole_open_location_match (GtkEntryCompletion *cmpl, const gchar *key, 
-			    GtkTreeIter *iter, gpointer data)
-{
-    gchar *uri, *match;
-
-    gtk_tree_model_get (data, iter, 0, &uri, -1);
-    match = strstr (uri, key);
-    g_free (uri);
-
-    return (match != NULL);
-}
-
-static void
-parole_open_location_class_init (ParoleOpenLocationClass *klass)
-{
-    GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
-    object_class->finalize = parole_open_location_finalize;
-    
-    signals[LOCATION_OPENED] = 
-        g_signal_new("location-opened",
-                      PAROLE_TYPE_OPEN_LOCATION,
-                      G_SIGNAL_RUN_LAST,
-                      G_STRUCT_OFFSET (ParoleOpenLocationClass, location_opened),
-                      NULL, NULL,
-                      g_cclosure_marshal_VOID__STRING,
-                      G_TYPE_NONE, 1, G_TYPE_STRING);
-
-    g_type_class_add_private (klass, sizeof (ParoleOpenLocationPrivate));
-}
-
-static void
-parole_open_location_init (ParoleOpenLocation *self)
-{
-    self->priv = PAROLE_OPEN_LOCATION_GET_PRIVATE (self);
-}
-
-static void
-parole_open_location_finalize (GObject *object)
-{
-    ParoleOpenLocation *self;
-
-    self = PAROLE_OPEN_LOCATION (object);
-
-    G_OBJECT_CLASS (parole_open_location_parent_class)->finalize (object);
-}
-
-static void
-parole_open_location_clear_history (GtkTreeModel *model)
-{
-    parole_clear_history_file ();
-    gtk_list_store_clear (GTK_LIST_STORE (model));
-}
-
-GtkWidget *parole_open_location (GtkWidget *parent)
-{
-    GtkEntryCompletion *cmpl;
-    GtkTreeModel *model;
-    GtkWidget *label;
-    GtkWidget *clear;
-    GtkWidget *img;
-    GtkWidget *vbox;
-    GtkWidget *hbox;
-    
-    ParoleOpenLocation *self = NULL;
-    
-    self = g_object_new (PAROLE_TYPE_OPEN_LOCATION, NULL);
-    
-    if ( parent )
-	gtk_window_set_transient_for (GTK_WINDOW (self), GTK_WINDOW (parent));
-    
-    gtk_window_set_title (GTK_WINDOW (self), _("Open location..."));
-    gtk_window_set_default_size (GTK_WINDOW (self), 360, 40);
-    gtk_window_set_position (GTK_WINDOW (self), GTK_WIN_POS_CENTER_ON_PARENT);
-    
-    label = gtk_label_new (NULL);
-    gtk_label_set_markup (GTK_LABEL (label), _("<b>Open location of media file or live stream:</b>"));
-    
-    self->priv->entry = gtk_entry_new ();
-    model = parole_open_location_get_completion_model ();
-    
-    gtk_entry_set_activates_default (GTK_ENTRY (self->priv->entry), TRUE);
-    cmpl = gtk_entry_completion_new ();
-    
-    gtk_entry_set_completion (GTK_ENTRY (self->priv->entry), cmpl);
-    gtk_entry_completion_set_model (cmpl, model);
-    
-    gtk_entry_completion_set_text_column (cmpl, 0);
-    gtk_entry_completion_set_match_func (cmpl, 
-					 (GtkEntryCompletionMatchFunc) parole_open_location_match, 
-					 model, 
-					 NULL);
-	
-    img = gtk_image_new_from_stock (GTK_STOCK_CLEAR, GTK_ICON_SIZE_BUTTON);
-    
-    clear = gtk_button_new_with_label (_("Clear history"));
-    g_signal_connect_swapped (clear, "clicked",
-			      G_CALLBACK (parole_open_location_clear_history), model);
-
-    g_object_set (G_OBJECT (clear),
-		  "image", img,
-		  NULL);
-
-    vbox = gtk_vbox_new (TRUE, 4);
-    hbox = gtk_hbox_new (FALSE, 8);
-    
-    gtk_box_pack_start (GTK_BOX (vbox), label, TRUE, TRUE, 0);
-    gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
-    
-    gtk_box_pack_start (GTK_BOX (hbox), self->priv->entry, TRUE, TRUE, 0);
-    gtk_box_pack_start (GTK_BOX (hbox), clear, FALSE, FALSE, 0);
-    
-    gtk_box_pack_start (GTK_BOX (GTK_DIALOG (self)->vbox),
-			vbox,
-			TRUE,   
-			TRUE,
-			0);   
-    
-    gtk_dialog_add_buttons (GTK_DIALOG (self), 
-			    GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
-			    GTK_STOCK_OPEN, GTK_RESPONSE_OK,
-			    NULL);
-    
-    gtk_dialog_set_default_response (GTK_DIALOG (self), GTK_RESPONSE_OK);
-    
-    g_signal_connect (self, "delete-event",
-		      G_CALLBACK (gtk_widget_destroy), self);
-		      
-    g_signal_connect (self, "response",
-		      G_CALLBACK (parole_open_location_response_cb), self);
-		      
-    gtk_widget_show_all (GTK_WIDGET (self));
-    
-    return GTK_WIDGET (self);
-}
diff --git a/parole/parole-open-location.h b/parole/parole-open-location.h
deleted file mode 100644
index 15ee1b1..0000000
--- a/parole/parole-open-location.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#ifndef __PAROLE_OPEN_LOCATION_H
-#define __PAROLE_OPEN_LOCATION_H
-
-#include <glib-object.h>
-#include <gtk/gtk.h>
-
-G_BEGIN_DECLS
-
-#define PAROLE_TYPE_OPEN_LOCATION        (parole_open_location_get_type () )
-#define PAROLE_OPEN_LOCATION(o)          (G_TYPE_CHECK_INSTANCE_CAST ((o), PAROLE_TYPE_OPEN_LOCATION, ParoleOpenLocation))
-#define PAROLE_IS_OPEN_LOCATION(o)       (G_TYPE_CHECK_INSTANCE_TYPE ((o), PAROLE_TYPE_OPEN_LOCATION))
-
-typedef struct ParoleOpenLocationPrivate ParoleOpenLocationPrivate;
-
-typedef struct
-{
-    GtkDialog         		   parent;
-    ParoleOpenLocationPrivate     *priv;
-    
-} ParoleOpenLocation;
-
-typedef struct
-{
-    GtkDialogClass 		   parent_class;
-    
-    void			  (*location_opened)		       (ParoleOpenLocation *self,
-								        const gchar *address);
-    
-} ParoleOpenLocationClass;
-
-GType        			   parole_open_location_get_type       (void) G_GNUC_CONST;
-
-GtkWidget			  *parole_open_location 	       (GtkWidget *parent);
-
-G_END_DECLS
-
-#endif /* __PAROLE_OPEN_LOCATION_H */
diff --git a/parole/parole-pl-parser.c b/parole/parole-pl-parser.c
deleted file mode 100644
index 4255cc4..0000000
--- a/parole/parole-pl-parser.c
+++ /dev/null
@@ -1,660 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-/*
- * Based on code from:
- * 
- * Totem pl parser:	Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 Bastien Nocera
- * 		        Copyright (C) 2003, 2004 Colin Walters <walters at rhythmbox.org>
- * 
- * xfmedia:		Copyright (c) 2004-2005 Brian Tarricone, <bjt23 at cornell.edu>
- * 
- * Thanks :).
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <gio/gio.h>
-#include <libxfce4util/libxfce4util.h>
-
-#include "parole-pl-parser.h"
-#include "parole-file.h"
-#include "parole-filters.h"
-#include "parole-debug.h"
-#include "enum-gtypes.h"
-
-typedef struct
-{
-    GSList    *list;
-    gboolean  started;
-    gchar    *uri;
-    gchar    *title;
-    
-} ParoleParserData;
-
-static void
-parole_xspf_xml_start (GMarkupParseContext *context, const gchar *element_name,
-		       const gchar **attribute_names, const gchar **attribute_values,
-		       gpointer user_data, GError **error)
-{
-    ParoleParserData *data = user_data;
-    
-    if ( !data->started )
-    {
-	if (!g_ascii_strcasecmp (element_name, "playlist") )
-	    data->started = TRUE;
-    }
-}
-
-static void
-parole_xspf_xml_text (GMarkupParseContext *context, const gchar *text, gsize text_len,  
-		      gpointer user_data, GError **error)
-{
-    ParoleParserData *data = user_data;
-    const gchar *element_name;
-    
-    if (!data->started)
-        return;
-    
-    element_name = g_markup_parse_context_get_element (context);
-    
-    if (!g_ascii_strcasecmp (element_name, "location") ) 
-    {
-        if (data->uri) 
-	{
-            g_free (data->uri);
-            data->uri = NULL;
-        }
-	
-        if (text_len > 0)
-            data->uri = g_strdup (text);
-    }
-    else if (!g_ascii_strcasecmp (element_name, "title") ) 
-    {
-        if (data->title) 
-	{
-            g_free (data->title);
-            data->title = NULL;
-        }
-	
-        if (text_len > 0)
-            data->title = g_strdup (text);
-    }
-}
-
-static void
-parole_xspf_xml_end (GMarkupParseContext *context, const gchar *element_name,
-		     gpointer user_data, GError **error)
-{
-    ParoleParserData *data = user_data;
-    ParoleFile *file;
-    
-    if (! g_ascii_strcasecmp (element_name, "playlist"))
-        data->started = FALSE;
-	
-    if (!data->started)
-        return;
-	
-    if (!g_ascii_strcasecmp (element_name, "track")) 
-    {
-        if (data->uri) 
-	{
-	    file = parole_file_new_with_display_name (data->uri, data->title);
-	    data->list = g_slist_append (data->list, file);
-	    
-	    g_free (data->uri);
-	    data->uri = NULL;
-	}
-	
-	if ( data->title)
-	{
-	    g_free (data->title);
-	    data->title = NULL;
-	}
-    }
-}
-
-static void
-parole_asx_xml_start (GMarkupParseContext *context, const gchar *element_name,
-		      const gchar **attribute_names, const gchar **attribute_values,
-		      gpointer user_data, GError **error)
-{
-    guint i;
-    ParoleParserData *data = user_data;
-    
-    if ( !data->started )
-    {
-	if (!g_ascii_strcasecmp (element_name, "asx") )
-	    data->started = TRUE;
-	else
-	    return;
-    }
-    
-    if (!g_ascii_strcasecmp (element_name, "ref") ) 
-    {
-        if (data->uri) 
-	{
-            g_free (data->uri);
-            data->uri = NULL;
-        }
-	
-        for ( i = 0; attribute_names[i]; i++) 
-	{
-            if ( !g_ascii_strcasecmp (attribute_names[i], "href")) 
-	    {
-                data->uri = g_strdup (attribute_values[i]);
-                break;
-            }
-        }
-    }
-}
-
-static void
-parole_asx_xml_text (GMarkupParseContext *context, const gchar *text, gsize text_len,  
-		     gpointer user_data, GError **error)
-{
-    ParoleParserData *data = user_data;
-    const gchar *element_name;
-    
-    if (!data->started)
-        return;
-    
-    element_name = g_markup_parse_context_get_element (context);
-    
-    if (!g_ascii_strcasecmp (element_name, "title") ) 
-    {
-        if (data->title) 
-	{
-            g_free (data->title);
-            data->title = NULL;
-        }
-	
-        if (text_len > 0)
-            data->title = g_strdup (text);
-    }
-}
-
-static void
-parole_asx_xml_end (GMarkupParseContext *context, const gchar *element_name,
-		    gpointer user_data, GError **error)
-{
-    ParoleParserData *data = user_data;
-    ParoleFile *file;
-    
-    if (!g_ascii_strcasecmp (element_name, "ASX"))
-        data->started = FALSE;
-	
-    if (!data->started)
-        return;
-	
-    if (!g_ascii_strcasecmp (element_name, "entry")) 
-    {
-        if (data->uri) 
-	{
-	    file = parole_file_new_with_display_name (data->uri, data->title);
-	    data->list = g_slist_append (data->list, file);
-	    
-	    g_free (data->uri);
-	    data->uri = NULL;
-	}
-	
-	if ( data->title)
-	{
-	    g_free (data->title);
-	    data->title = NULL;
-	}
-    }
-}
-
-ParolePlFormat
-parole_pl_parser_guess_format_from_extension (const gchar *filename)
-{
-    if ( g_str_has_suffix (filename, ".m3u") || g_str_has_suffix (filename, ".M3U") )
-	return PAROLE_PL_FORMAT_M3U;
-	
-    if ( g_str_has_suffix (filename, ".pls") || g_str_has_suffix (filename, ".PLS") )
-	return PAROLE_PL_FORMAT_PLS;
-	
-    if ( g_str_has_suffix (filename, ".xspf") || g_str_has_suffix (filename, ".XSPF") )
-	return PAROLE_PL_FORMAT_XSPF;
-	
-    if ( g_str_has_suffix (filename, ".asx") || g_str_has_suffix (filename, ".ASX") )
-	return PAROLE_PL_FORMAT_ASX;
-	
-    if ( g_str_has_suffix (filename, ".wax") || g_str_has_suffix (filename, ".WAX") )
-	return PAROLE_PL_FORMAT_XSPF;
-	
-    return PAROLE_PL_FORMAT_UNKNOWN;
-}
-
-static ParolePlFormat
-parole_pl_parser_guess_format_from_data (const gchar *filename)
-{
-    
-    return PAROLE_PL_FORMAT_UNKNOWN;
-}
-
-static GSList *
-parole_pl_parser_parse_asx (const gchar *filename)
-{
-    ParoleParserData data;
-    GFile *file;
-    gchar *contents;
-    GError *error = NULL;
-    gsize size;
-    GMarkupParseContext *pctx;
-    GMarkupParser parser = {
-        parole_asx_xml_start,
-        parole_asx_xml_end,
-        parole_asx_xml_text,
-        NULL,
-        NULL
-    };
-    
-    data.list = NULL;
-    data.title = data.uri = NULL;
-    
-    file = g_file_new_for_path (filename);
-    
-    if ( !g_file_load_contents (file, NULL, &contents, &size, NULL, NULL) )
-	goto out;
-    
-    if ( g_utf8_validate (contents, -1, NULL) == FALSE) 
-    {
-	gchar *fixed;
-	fixed = g_convert (contents, -1, "UTF-8", "ISO8859-1", NULL, NULL, NULL);
-	if (fixed != NULL) 
-	{
-	    g_free (contents);
-	    contents = fixed;
-	}
-    }
-    
-    pctx = g_markup_parse_context_new (&parser, 0, &data, NULL);
-    
-    if ( !g_markup_parse_context_parse (pctx, contents, size, &error) )
-    {
-	if ( error )
-	{
-	    g_critical ("Unable to parse asx file : %s : %s\n", filename, error->message);
-	    g_error_free (error);
-	}
-    }
-    else
-    {
-	if ( !g_markup_parse_context_end_parse (pctx, &error) )
-	{
-            g_critical ("Unable to finish parsing ASX playlist file %s", error->message);
-            g_error_free (error);
-        }
-    }
-    
-    g_markup_parse_context_free (pctx);
-    
-out:
-    g_object_unref (file);
-    return data.list;
-}
-
-static GSList *
-parole_pl_parser_parse_m3u (const gchar *filename)
-{
-    GFile *file;
-    gchar **lines;
-    gchar *contents;
-    GSList *list = NULL;
-    gsize size;
-    guint num_lines;
-    const gchar *split_char;
-    guint i;
-    
-    file = g_file_new_for_path (filename);
-    
-    if ( !g_file_load_contents (file, NULL, &contents, &size, NULL, NULL) )
-	goto out;
-    
-    if ( g_utf8_validate (contents, -1, NULL) == FALSE) 
-    {
-	gchar *fixed;
-	fixed = g_convert (contents, -1, "UTF-8", "ISO8859-1", NULL, NULL, NULL);
-	if (fixed != NULL) 
-	{
-	    g_free (contents);
-	    contents = fixed;
-	}
-    }
-    
-    if ( strstr (contents,"\x0d") == NULL) 
-    {
-	split_char = "\n";
-    } 
-    else 
-    {
-	split_char = "\x0d\n";
-    }
-    
-    lines = g_strsplit (contents, split_char, 0);
-    g_free (contents);
-    
-    num_lines = g_strv_length (lines);
-    num_lines--; /* Drop the terminating NULL */
-
-    for ( i = 0; lines[i] != NULL; i++)
-    {
-	if ( lines[i][0] == '\0' || lines[i][0] == '#')
-	    continue;
-
-	list = g_slist_append (list, parole_file_new (lines[i]));
-    }
-
-    g_strfreev (lines);
-out:
-
-    g_object_unref (file);
-
-    return list;
-}
-
-static GSList *
-parole_pl_parser_parse_pls (const gchar *filename)
-{
-    XfceRc *rcfile;
-    GSList *list = NULL;
-    ParoleFile *file;
-    const gchar *file_entry, *title_entry;
-    guint i, nentries;
-    gchar key[128];
-
-    rcfile = xfce_rc_simple_open (filename, TRUE);
-
-    if ( xfce_rc_has_group (rcfile, "playlist") ) 
-    {
-        xfce_rc_set_group (rcfile, "playlist");
-        
-        nentries = xfce_rc_read_int_entry (rcfile, "NumberOfEntries", 0);
-
-        for (i = 1; i <= nentries; i++) 
-	{
-            g_snprintf (key, 128, "File%d", i);
-	    
-            file_entry = xfce_rc_read_entry (rcfile, key, NULL);
-	    
-            if (!file_entry)
-                continue;
-	    
-	    g_snprintf (key, 128, "Title%d", i);
-	    
-            title_entry = xfce_rc_read_entry (rcfile, key, NULL);
-	    
-	    file = parole_file_new_with_display_name (file_entry, title_entry);
-	    list = g_slist_append (list, file);
-	}
-    }
-    
-    xfce_rc_close (rcfile);
-    
-    return list;
-}
-
-static GSList *
-parole_pl_parser_parse_xspf (const gchar *filename)
-{
-    ParoleParserData data;
-    GFile *file;
-    gchar *contents;
-    GError *error = NULL;
-    gsize size;
-    GMarkupParseContext *pctx;
-    GMarkupParser parser = {
-        parole_xspf_xml_start,
-        parole_xspf_xml_end,
-        parole_xspf_xml_text,
-        NULL,
-        NULL
-    };
-    
-    data.list = NULL;
-    data.title = data.uri = NULL;
-    
-    file = g_file_new_for_path (filename);
-    
-    if ( !g_file_load_contents (file, NULL, &contents, &size, NULL, NULL) )
-	goto out;
-    
-    if ( g_utf8_validate (contents, -1, NULL) == FALSE) 
-    {
-	gchar *fixed;
-	fixed = g_convert (contents, -1, "UTF-8", "ISO8859-1", NULL, NULL, NULL);
-	if (fixed != NULL) 
-	{
-	    g_free (contents);
-	    contents = fixed;
-	}
-    }
-    
-    pctx = g_markup_parse_context_new (&parser, 0, &data, NULL);
-    
-    if ( !g_markup_parse_context_parse (pctx, contents, size, &error) )
-    {
-	if ( error )
-	{
-	    g_critical ("Unable to parse xspf file : %s : %s\n", filename, error->message);
-	    g_error_free (error);
-	}
-    }
-    else
-    {
-	if ( !g_markup_parse_context_end_parse (pctx, &error) )
-	{
-            g_critical ("Unable to finish parsing xspf playlist file %s", error->message);
-            g_error_free (error);
-        }
-    }
-    
-    g_markup_parse_context_free (pctx);
-    
-out:
-    g_object_unref (file);
-    return data.list;
-}
-
-static GSList *
-parole_pl_parser_parse (ParolePlFormat format, const gchar *filename)
-{
-    GSList *list = NULL;
-    
-    switch (format)
-    {
-	case PAROLE_PL_FORMAT_M3U:
-	    list = parole_pl_parser_parse_m3u (filename);
-	    break;
-	case PAROLE_PL_FORMAT_PLS:
-	    list = parole_pl_parser_parse_pls (filename);
-	    break;
-	case PAROLE_PL_FORMAT_ASX:
-	    list = parole_pl_parser_parse_asx (filename);
-	    break;
-	case PAROLE_PL_FORMAT_XSPF:
-	    list = parole_pl_parser_parse_xspf (filename);
-	    break;
-	default:
-	    break;
-    }
-
-    return list;
-}
-
-GSList *parole_pl_parser_load_file (const gchar *filename)
-{
-    ParolePlFormat format = PAROLE_PL_FORMAT_UNKNOWN;
-    GtkFileFilter *filter;
-    GSList *list = NULL;
-    
-    filter = parole_get_supported_playlist_filter ();
-    g_object_ref_sink (filter);
-    
-    if ( (format = parole_pl_parser_guess_format_from_extension (filename)) == PAROLE_PL_FORMAT_UNKNOWN)
-	if ( (format = parole_pl_parser_guess_format_from_data (filename)) == PAROLE_PL_FORMAT_UNKNOWN)
-	{
-	    g_debug ("Unable to guess playlist format of file : %s", filename);
-	    goto out;
-	}
-	    
-    PAROLE_DEBUG_ENUM_FULL (format, ENUM_GTYPE_PL_FORMAT, "playlist %s ", filename);
-    list = parole_pl_parser_parse (format, filename);
-	
-out:
-    g_object_unref (filter);
-    
-    return list;
-}
-
-static gboolean
-parole_pl_parser_save_m3u (FILE *f, GSList *files)
-{
-    guint len;
-    guint i;
-    
-    fputs ("#EXTM3U\n", f);
-    
-    len = g_slist_length (files);
-    
-    for ( i = 0; i < len; i++)
-    {
-	ParoleFile *file;
-	file = g_slist_nth_data (files, i);
-	fprintf (f, "%s\n", parole_file_get_file_name (file));
-    }
-    
-    return TRUE;
-}
-
-static gboolean
-parole_pl_parser_save_pls (FILE *f, GSList *files)
-{
-    guint len;
-    guint i;
-    gchar key[128];
-    
-    len = g_slist_length (files);
-    
-    fprintf (f, "[playlist]\nNumberOfEntries=%d\n", len);
-    
-    for ( i = 1; i <= len; i++)
-    {
-	ParoleFile *file;
-	file = g_slist_nth_data (files, i - 1);
-	g_snprintf (key, 128, "File%d", i);
-	fprintf (f, "%s=%s\n", key, parole_file_get_file_name (file));
-	g_snprintf (key, 128, "Title%d", i);
-	fprintf (f, "%s=%s\n\n", key, parole_file_get_display_name (file));
-    }
-    
-    return TRUE;
-}
-
-static gboolean
-parole_pl_parser_save_asx (FILE *f, GSList *files)
-{
-    guint len;
-    guint i;
-    
-    len = g_slist_length (files);
-
-    fputs ("<ASX VERSION=\"3.0\">\n", f);
-    
-    for ( i = 0; i < len; i++)
-    {
-	ParoleFile *file;
-	file = g_slist_nth_data (files, i);
-	fprintf (f, "  <ENTRY>\n   <TITLE>%s</TITLE>\n    <REF HREF=\"%s\"/>\n  </ENTRY>\n", 
-		 parole_file_get_display_name (file),
-		 parole_file_get_uri (file));
-    }
-    
-    fputs ("</ASX>\n", f);
-    
-    return TRUE;
-}
-
-static gboolean
-parole_pl_parser_save_xspf (FILE *f, GSList *files)
-{
-    guint len;
-    guint i;
-    
-    len = g_slist_length (files);
-    
-    fputs ("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
-	   "<playlist version=\"1\" xmlns=\"http://xspf.org/ns/0/\">\n", f);
-	   
-    fputs (" <trackList>\n", f);
-    
-    for ( i = 0; i < len; i++)
-    {
-	ParoleFile *file;
-	
-	file = g_slist_nth_data (files, i);
-	fprintf (f, "  <track>\n    <title>%s</title>\n    <location>%s</location>\n  </track>\n", 
-		 parole_file_get_display_name (file), parole_file_get_uri (file));
-    }
-    
-    fputs (" </trackList>\n<playlist>", f);
-    
-    return TRUE;
-}
-
-gboolean parole_pl_parser_save_file (GSList *files, const gchar *filename, ParolePlFormat format)
-{
-    FILE *f;
-    gboolean ret_val;
-
-    PAROLE_DEBUG_ENUM_FULL (format, ENUM_GTYPE_PL_FORMAT, "Saving playlist %s ", filename);
-    
-    f = fopen (filename, "w");
-    
-    switch (format)
-    {
-	case PAROLE_PL_FORMAT_M3U:
-	    ret_val = parole_pl_parser_save_m3u (f, files);
-	    break;
-	case PAROLE_PL_FORMAT_PLS:
-	    ret_val = parole_pl_parser_save_pls (f, files);
-	    break;
-	case PAROLE_PL_FORMAT_ASX:
-	    ret_val = parole_pl_parser_save_asx (f, files);
-	    break;
-	case PAROLE_PL_FORMAT_XSPF:
-	    ret_val = parole_pl_parser_save_xspf (f, files);
-	    break;
-	default:
-	    break;
-    }
-    
-    fclose (f);
-    
-    return ret_val;
-}
diff --git a/parole/parole-pl-parser.h b/parole/parole-pl-parser.h
deleted file mode 100644
index 281924e..0000000
--- a/parole/parole-pl-parser.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#ifndef __PAROLE_PL_PARSER_H
-#define __PAROLE_PL_PARSER_H
-
-#include <glib.h>
-
-G_BEGIN_DECLS
-
-typedef enum
-{
-    PAROLE_PL_FORMAT_UNKNOWN,
-    PAROLE_PL_FORMAT_M3U,
-    PAROLE_PL_FORMAT_PLS,
-    PAROLE_PL_FORMAT_ASX,
-    PAROLE_PL_FORMAT_XSPF
-    
-} ParolePlFormat;
-
-ParolePlFormat		 parole_pl_parser_guess_format_from_extension   (const gchar *filename);
-
-GSList 			*parole_pl_parser_load_file		        (const gchar *filename);
-
-gboolean		 parole_pl_parser_save_file		        (GSList *files,
-								         const gchar *filename,
-									 ParolePlFormat format);
-
-G_END_DECLS
-
-#endif /* __PAROLE_PL_PARSER_H */
diff --git a/parole/parole-player.c b/parole/parole-player.c
deleted file mode 100644
index 44b9ad9..0000000
--- a/parole/parole-player.c
+++ /dev/null
@@ -1,1965 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#ifdef HAVE_XF86_KEYSYM
-#include <X11/XF86keysym.h>
-#endif
-
-#include <gdk/gdkkeysyms.h>
-#include <gtk/gtk.h>
-
-#include <libxfce4util/libxfce4util.h>
-#include <libxfcegui4/libxfcegui4.h>
-
-#include <dbus/dbus-glib.h>
-
-#include "parole-builder.h"
-#include "parole-about.h"
-
-#include "parole-player.h"
-#include "parole-gst.h"
-#include "parole-dbus.h"
-#include "parole-mediachooser.h"
-#include "parole-file.h"
-#include "parole-filters.h"
-#include "parole-disc.h"
-#include "parole-disc-menu.h"
-#include "parole-statusbar.h"
-#include "parole-screensaver.h"
-#include "parole-conf-dialog.h"
-#include "parole-conf.h"
-#include "parole-rc-utils.h"
-#include "parole-utils.h"
-#include "parole-session.h"
-#include "parole-debug.h"
-#include "parole-button.h"
-#include "enum-gtypes.h"
-#include "parole-debug.h"
-
-#include "gst/gst-enum-types.h"
-
-#include "common/parole-common.h"
-
-/*
- * DBus Glib init
- */
-static void parole_player_dbus_class_init (ParolePlayerClass *klass);
-static void parole_player_dbus_init       (ParolePlayer *player);
-
-/*
- * GtkBuilder Callbacks
- */
-gboolean        parole_player_configure_event_cb        (GtkWidget *widget, 
-							 GdkEventConfigure *ev, 
-							 ParolePlayer *player);
-							 
-gboolean	parole_player_range_button_press 	(GtkWidget *widget, 
-							 GdkEventButton *ev, 
-							 ParolePlayer *player);
-
-gboolean	parole_player_range_button_release	(GtkWidget *widget,
-							 GdkEventButton *ev,
-							 ParolePlayer *player);
-
-void            parole_player_range_value_changed       (GtkRange *range, 
-							 ParolePlayer *player);
-
-void            parole_player_play_pause_clicked        (GtkButton *button, 
-							 ParolePlayer *player);
-
-void            parole_player_stop_clicked              (GtkButton *button, 
-							 ParolePlayer *player);
-
-void            parole_player_seekf_cb                  (GtkButton *button, 
-							 ParolePlayer *player);
-							 
-void            parole_player_seekb_cb                  (GtkButton *button, 
-							 ParolePlayer *player);
-
-gboolean        parole_player_scroll_event_cb		(GtkWidget *widget,
-							 GdkEventScroll *ev,
-							 ParolePlayer *player);
-
-void		parole_player_leave_fs_cb		(GtkButton *button,
-							 ParolePlayer *player);
-
-void            parole_player_destroy_cb                (GtkObject *window, 
-							 ParolePlayer *player);
-
-gboolean	parole_player_delete_event_cb		(GtkWidget *widget, 
-							 GdkEvent *ev,
-							 ParolePlayer *player);
-
-void		parole_player_show_hide_playlist	(GtkButton *button,
-							 ParolePlayer *player);
-
-/*Menu items callbacks*/
-void            parole_player_menu_open_location_cb     (GtkWidget *widget, 
-							 ParolePlayer *player);
-
-void            parole_player_menu_add_cb               (GtkWidget *widget, 
-							 ParolePlayer *player);
-
-void            parole_player_menu_exit_cb              (GtkWidget *widget,
-							 ParolePlayer *player);
-
-void            parole_player_volume_up 		(GtkWidget *widget, 
-							 ParolePlayer *player);
-
-void            parole_player_volume_down 		(GtkWidget *widget, 
-							 ParolePlayer *player);
-
-void            parole_player_volume_muted 		(GtkWidget *widget, 
-							 ParolePlayer *player);
-
-void		parole_player_open_preferences_cb	(GtkWidget *widget,
-							 ParolePlayer *player);
-
-void            parole_player_volume_value_changed_cb   (GtkRange *range, 
-							 ParolePlayer *player);
-
-void		parole_player_full_screen_activated_cb  (GtkWidget *widget,
-							 ParolePlayer *player);
-
-void		parole_player_shuffle_toggled_cb	(GtkWidget *widget,
-							 ParolePlayer *player);
-
-void		parole_player_repeat_toggled_cb		(GtkWidget *widget,
-							 ParolePlayer *player);
-
-/*
- * Aspect ratio
- */
-void		ratio_none_toggled_cb			(GtkWidget *widget,
-							 ParolePlayer *player);
-
-void		ratio_auto_toggled_cb			(GtkWidget *widget,
-							 ParolePlayer *player);
-
-void		ratio_square_toggled_cb			(GtkWidget *widget,
-							 ParolePlayer *player);
-
-void		ratio_4_3_toggled_cb			(GtkWidget *widget,
-							 ParolePlayer *player);
-
-void		ratio_16_9_toggled_cb			(GtkWidget *widget,
-							 ParolePlayer *player);
-
-void		ratio_20_9_toggled_cb			(GtkWidget *widget,
-							 ParolePlayer *player);
-
-void	        parole_show_about			(GtkWidget *widget);
-
-gboolean	parole_player_key_press 		(GtkWidget *widget, 
-							 GdkEventKey *ev, 
-							 ParolePlayer *player);
-
-static GtkTargetEntry target_entry[] =
-{
-    { "STRING",        0, 0 },
-    { "text/uri-list", 0, 1 },
-};
-
-/*
- * End of GtkBuilder Callbacks
- */
-#define PAROLE_PLAYER_GET_PRIVATE(o) \
-(G_TYPE_INSTANCE_GET_PRIVATE ((o), PAROLE_TYPE_PLAYER, ParolePlayerPrivate))
-
-struct ParolePlayerPrivate
-{
-    ParoleMediaList	*list;
-    ParoleStatusbar     *status;
-    ParoleDisc          *disc;
-    ParoleScreenSaver   *screen_saver;
-    ParoleConf          *conf;
-    ParoleDiscMenu      *disc_menu;
-    ParoleSession       *session;
-#ifdef HAVE_XF86_KEYSYM
-    ParoleButton        *button;
-#endif
-    
-    GtkFileFilter       *video_filter;
-    GtkRecentManager    *recent;
-
-    GtkWidget 		*gst;
-
-    GtkWidget 		*window;
-    GtkWidget		*playlist_nt;
-    GtkWidget		*main_nt;	/*Main notebook*/
-    GtkWidget		*show_hide_playlist;
-    GtkWidget		*play_pause;
-    GtkWidget		*stop;
-    GtkWidget		*seekf;
-    GtkWidget		*seekb;
-    GtkWidget		*range;
-    
-    GtkWidget		*fs_window; /* Window for packing control widgets 
-				     * when in full screen mode
-				     */
-    GtkWidget		*control; /* contains all play button*/
-    GtkWidget		*leave_fs;
-    
-    GtkWidget		*main_box;
-    
-    GtkWidget		*volume;
-    GtkWidget		*volume_image;
-    GtkWidget		*menu_bar;
-    GtkWidget		*play_box;
-     
-    gboolean             exit;
-    
-    gboolean		 full_screen;
-    
-    ParoleMediaState     state;
-    gboolean		 user_seeking;
-    gboolean             internal_range_change;
-    gboolean		 buffering;
-    
-    GtkTreeRowReference *row;
-        
-};
-
-G_DEFINE_TYPE (ParolePlayer, parole_player, G_TYPE_OBJECT)
-
-void parole_show_about	(GtkWidget *widget)
-{
-    parole_about ();
-}
-
-void ratio_none_toggled_cb (GtkWidget *widget, ParolePlayer *player)
-{
-    g_object_set (G_OBJECT (player->priv->conf),
-		  "aspect-ratio", PAROLE_ASPECT_RATIO_NONE,
-		  NULL);
-}
-
-void ratio_auto_toggled_cb (GtkWidget *widget, ParolePlayer *player)
-{
-    g_object_set (G_OBJECT (player->priv->conf),
-		  "aspect-ratio", PAROLE_ASPECT_RATIO_AUTO,
-		  NULL);
-}
-
-void ratio_square_toggled_cb (GtkWidget *widget, ParolePlayer *player)
-{
-     g_object_set (G_OBJECT (player->priv->conf),
-		  "aspect-ratio", PAROLE_ASPECT_RATIO_SQUARE,
-		  NULL);
-}
-
-void ratio_4_3_toggled_cb (GtkWidget *widget, ParolePlayer *player)
-{
-    g_object_set (G_OBJECT (player->priv->conf),
-		  "aspect-ratio", PAROLE_ASPECT_RATIO_4_3,
-		  NULL);
-}
-
-void ratio_16_9_toggled_cb (GtkWidget *widget, ParolePlayer *player)
-{
-    g_object_set (G_OBJECT (player->priv->conf),
-		  "aspect-ratio", PAROLE_ASPECT_RATIO_16_9,
-		  NULL);
-}
-
-void ratio_20_9_toggled_cb (GtkWidget *widget, ParolePlayer *player)
-{
-    g_object_set (G_OBJECT (player->priv->conf),
-		  "aspect-ratio", PAROLE_ASPECT_RATIO_DVB,
-		  NULL);
-}
-
-void parole_player_show_hide_playlist (GtkButton *button, ParolePlayer *player)
-{
-    GtkWidget *img;
-    gboolean   visible;
-    
-    g_object_get (G_OBJECT (player->priv->show_hide_playlist),
-		  "image", &img,
-		  NULL);
-
-    visible = GTK_WIDGET_VISIBLE (player->priv->playlist_nt);
-
-    if ( !visible )
-    {
-	g_object_set (G_OBJECT (img),
-		      "stock", GTK_STOCK_GO_FORWARD,
-		      NULL);
-		      
-	gtk_widget_show_all (player->priv->playlist_nt);
-	gtk_widget_set_tooltip_text (GTK_WIDGET (player->priv->show_hide_playlist), _("Hide playlist"));
-    }
-    else
-    {
-	g_object_set (G_OBJECT (img),
-		      "stock", GTK_STOCK_GO_BACK,
-		      NULL);
-		      
-	gtk_widget_hide_all (player->priv->playlist_nt);
-	gtk_widget_set_tooltip_text (GTK_WIDGET (player->priv->show_hide_playlist), _("Show playlist"));
-    }
-    g_object_unref (img);
-}
-
-static void
-parole_player_change_range_value (ParolePlayer *player, gdouble value)
-{
-    if ( !player->priv->user_seeking )
-    {
-	player->priv->internal_range_change = TRUE;
-    
-	gtk_range_set_value (GTK_RANGE (player->priv->range), value);
-
-	player->priv->internal_range_change = FALSE;
-    }
-}
-
-static void
-parole_player_reset (ParolePlayer *player)
-{
-    parole_player_change_range_value (player, 0);
-
-    if ( player->priv->row )
-    {
-	parole_media_list_set_row_pixbuf (player->priv->list, player->priv->row, NULL);
-	gtk_tree_row_reference_free (player->priv->row);
-	player->priv->row = NULL;
-    }
-}
-
-static void
-parole_player_media_activated_cb (ParoleMediaList *list, GtkTreeRowReference *row, ParolePlayer *player)
-{
-    ParoleFile *file;
-    GtkTreeIter iter;
-    GtkTreeModel *model;
-
-    parole_player_reset (player);
-    
-    player->priv->row = gtk_tree_row_reference_copy (row);
-    
-    model = gtk_tree_row_reference_get_model (row);
-    
-    if ( gtk_tree_model_get_iter (model, &iter, gtk_tree_row_reference_get_path (row)) )
-    {
-	gtk_tree_model_get (model, &iter, DATA_COL, &file, -1);
-	
-	if ( file )
-	{
-	    gchar *sub = NULL;
-	    const gchar *uri;
-	    
-	    uri = parole_file_get_uri (file);
-	    
-	    if ( g_str_has_prefix (uri, "file:/") )
-	    {
-		if ( parole_file_filter (player->priv->video_filter, file) )
-		{
-		    sub = parole_get_subtitle_path (uri);
-		}
-	    }
-	    TRACE ("Trying to play media file %s", uri);
-	    TRACE ("File content type %s", parole_file_get_content_type (file));
-	    
-	    gtk_widget_set_sensitive (player->priv->stop, TRUE);
-	    
-	    parole_gst_play_uri (PAROLE_GST (player->priv->gst), 
-				 parole_file_get_uri (file),
-				 sub);
-	    g_free (sub);
-	    gtk_widget_grab_focus (player->priv->gst);
-	    g_object_unref (file);
-	}
-    }
-}
-
-static void
-parole_player_disc_selected_cb (ParoleDisc *disc, const gchar *uri, const gchar *device, ParolePlayer *player)
-{
-    parole_player_reset (player);
-    gtk_widget_set_sensitive (player->priv->stop, TRUE);
-    
-    parole_gst_play_device_uri (PAROLE_GST (player->priv->gst), uri, device);
-    gtk_widget_grab_focus (player->priv->gst);
-}
-
-static void
-parole_player_uri_opened_cb (ParoleMediaList *list, const gchar *uri, ParolePlayer *player)
-{
-    parole_player_reset (player);
-    gtk_widget_set_sensitive (player->priv->stop, TRUE);
-    gtk_widget_grab_focus (player->priv->gst);
-    parole_gst_play_uri (PAROLE_GST (player->priv->gst), uri, NULL);
-}
-
-static void
-parole_player_media_cursor_changed_cb (ParoleMediaList *list, gboolean media_selected, ParolePlayer *player)
-{
-    if (player->priv->state < PAROLE_MEDIA_STATE_PAUSED)
-    {
-	gtk_widget_set_sensitive (player->priv->play_pause, 
-				  media_selected || !parole_media_list_is_empty (player->priv->list));
-    }
-}
-
-static void
-parole_player_media_progressed_cb (ParoleGst *gst, const ParoleStream *stream, gdouble value, ParolePlayer *player)
-{
-#ifdef DEBUG
-    g_return_if_fail (value > 0);
-#endif
-    
-    if ( !player->priv->user_seeking && player->priv->state == PAROLE_MEDIA_STATE_PLAYING )
-    {
-	parole_player_change_range_value (player, value);
-    }
-}
-
-static void
-parole_player_set_playpause_widget_image (GtkWidget *widget, const gchar *stock_id)
-{
-    GtkWidget *img;
-    
-    g_object_get (G_OBJECT (widget),
-		  "image", &img,
-		  NULL);
-		  
-    g_object_set (G_OBJECT (img),
-		  "stock", stock_id,
-		  NULL);
-
-    g_object_unref (img);
-}
-
-static void
-parole_player_set_playpause_button_image (GtkWidget *widget, const gchar *stock_id)
-{
-    GtkWidget *img;
-    
-    g_object_get (G_OBJECT (widget),
-		  "image", &img,
-		  NULL);
-		  
-    g_object_set (G_OBJECT (img),
-		  "stock", stock_id,
-		  NULL);
-
-    g_object_unref (img);
-}
-
-static void
-parole_player_save_uri (ParolePlayer *player, const ParoleStream *stream)
-{
-    ParoleMediaType media_type;
-    gchar *uri;
-    gboolean save = TRUE;
-    gchar **lines = NULL;
-    guint i;
-
-    g_object_get (G_OBJECT (stream),
-		  "uri", &uri,
-		  NULL);
-    
-    g_object_get (G_OBJECT (stream),
-		  "media-type", &media_type,
-		  NULL);
-		  
-    if ( media_type == PAROLE_MEDIA_TYPE_LOCAL_FILE )
-    {
-	gtk_recent_manager_add_item (player->priv->recent, uri);
-	goto out;
-    }
-	
-    lines = parole_get_history ();
-    
-    if (lines )
-    {
-	for ( i = 0; lines[i]; i++)
-	{
-	    if ( !g_strcmp0 (lines[i], uri) )
-	    {
-		save = FALSE;
-		break;
-	    }   
-	}
-    }
-    
-    if ( save )
-    {
-	parole_insert_line_history (uri);
-    }
-    
-    g_strfreev (lines);
-out:
-    g_free (uri);
-}
-
-static void
-parole_player_playing (ParolePlayer *player, const ParoleStream *stream)
-{
-    GdkPixbuf *pix = NULL;
-    gdouble duration;
-    gboolean seekable;
-    
-    player->priv->state = PAROLE_MEDIA_STATE_PLAYING;
-    
-    pix = parole_icon_load ("player_play", 16);
-    
-    if ( !pix )
-	pix = parole_icon_load ("gtk-media-play-ltr", 16);
-    
-    parole_media_list_set_row_pixbuf (player->priv->list, player->priv->row, pix);
-    
-    g_object_get (G_OBJECT (stream),
-		  "seekable", &seekable,
-		  "duration", &duration,
-		  NULL);
-		  
-    gtk_widget_set_sensitive (player->priv->play_pause, TRUE);
-    gtk_widget_set_sensitive (player->priv->stop, TRUE);
-    
-    parole_player_set_playpause_button_image (player->priv->play_pause, GTK_STOCK_MEDIA_PAUSE);
-    
-    gtk_widget_set_sensitive (player->priv->range, seekable);
-    
-    if ( seekable )
-    {
-	player->priv->internal_range_change = TRUE;
-	gtk_range_set_range (GTK_RANGE (player->priv->range), 0, duration);
-	gtk_widget_set_sensitive (player->priv->seekf, TRUE);
-	gtk_widget_set_sensitive (player->priv->seekb, TRUE);
-	player->priv->internal_range_change = FALSE;
-    }
-    else
-    {
-	gtk_widget_set_tooltip_text (GTK_WIDGET (player->priv->range), _("Media stream is not seekable"));
-	parole_player_change_range_value (player, 0);
-    }
-
-    if ( pix )
-	g_object_unref (pix);
-	
-    parole_player_save_uri (player, stream);
-}
-
-static void
-parole_player_paused (ParolePlayer *player)
-{
-    GdkPixbuf *pix = NULL;
-    
-    player->priv->state = PAROLE_MEDIA_STATE_PAUSED;
-    
-    TRACE ("Player paused");
-    
-    pix = parole_icon_load (GTK_STOCK_MEDIA_PAUSE, 16);
-    parole_media_list_set_row_pixbuf (player->priv->list, player->priv->row, pix);
-    
-    gtk_widget_set_sensitive (player->priv->play_pause, TRUE);
-    gtk_widget_set_sensitive (player->priv->stop, TRUE);
-    
-    parole_player_set_playpause_widget_image (player->priv->play_pause, GTK_STOCK_MEDIA_PLAY);
-    
-    if ( pix )
-	g_object_unref (pix);
-	
-}
-
-static void
-parole_player_quit (ParolePlayer *player)
-{
-    parole_media_list_save_list (player->priv->list);
-    parole_gst_shutdown (PAROLE_GST (player->priv->gst));
-    gtk_widget_destroy (player->priv->window);
-    g_object_unref (player);
-    gtk_main_quit ();
-}
-
-static void
-parole_player_stopped (ParolePlayer *player)
-{
-    TRACE ("Player stopped");
-    
-    player->priv->state = PAROLE_MEDIA_STATE_STOPPED;
-    
-    gtk_widget_set_sensitive (player->priv->play_pause, 
-			      parole_media_list_is_selected_row (player->priv->list) || 
-			      !parole_media_list_is_empty (player->priv->list));
-    
-    /* 
-     * Set the stop widget insensitive only if we are not going to got to playing
-     * state, this give the possibility to press on it if the media get stuck
-     * for some reason.
-     */
-    if ( parole_gst_get_gst_target_state (PAROLE_GST (player->priv->gst)) != GST_STATE_PLAYING)
-    {
-	gtk_widget_set_sensitive (player->priv->stop, FALSE);
-    }
-
-    parole_player_change_range_value (player, 0);
-    gtk_widget_set_sensitive (player->priv->range, FALSE);
-    
-    gtk_widget_set_sensitive (player->priv->seekf, FALSE);
-    gtk_widget_set_sensitive (player->priv->seekb, FALSE);
-
-    parole_player_set_playpause_widget_image (player->priv->play_pause, GTK_STOCK_MEDIA_PLAY);
-    
-    parole_media_list_set_row_pixbuf (player->priv->list, player->priv->row, NULL);
-    
-    if ( player->priv->exit )
-    {
-	parole_player_quit (player);
-    }
-}
-
-static void
-parole_player_play_selected_row (ParolePlayer *player)
-{
-    GtkTreeRowReference *row;
-    
-    row = parole_media_list_get_selected_row (player->priv->list);
-    
-    if ( row == NULL )
-	row = parole_media_list_get_first_row (player->priv->list);
-    
-    if ( row )
-	parole_player_media_activated_cb (player->priv->list, row, player);
-}
-
-static void
-parole_player_play_next (ParolePlayer *player, gboolean allow_shuffle)
-{
-    gboolean repeat, shuffle;
-    
-    GtkTreeRowReference *row;
-    
-    g_object_get (G_OBJECT (player->priv->conf),
-		  "shuffle", &shuffle,
-		  "repeat", &repeat,
-		  NULL);
-    
-    if ( player->priv->row )
-    {
-	parole_media_list_set_row_pixbuf (player->priv->list, player->priv->row, NULL);
-	
-	if ( shuffle && allow_shuffle )
-	    row = parole_media_list_get_row_random (player->priv->list);
-	else
-	    row = parole_media_list_get_next_row (player->priv->list, player->priv->row, repeat);
-	
-	if ( row )
-	{
-	    parole_player_media_activated_cb (player->priv->list, row, player);
-	    return;
-	}
-	else
-	{
-	    TRACE ("No remaining media in the list");
-	    gtk_tree_row_reference_free (player->priv->row);
-	    player->priv->row = NULL;
-	}
-    }
-
-    parole_gst_stop (PAROLE_GST (player->priv->gst));
-}
-
-static void
-parole_player_play_prev (ParolePlayer *player)
-{
-    GtkTreeRowReference *row;
-    
-    if ( player->priv->row )
-    {
-	parole_media_list_set_row_pixbuf (player->priv->list, player->priv->row, NULL);
-	
-	row = parole_media_list_get_prev_row (player->priv->list, player->priv->row);
-	
-	if ( row )
-	{
-	    parole_player_media_activated_cb (player->priv->list, row, player);
-	    return;
-	}
-	else
-	{
-	    TRACE ("No remaining media in the list");
-	    gtk_tree_row_reference_free (player->priv->row);
-	    player->priv->row = NULL;
-	}
-    }
-
-    parole_gst_stop (PAROLE_GST (player->priv->gst));
-}
-
-static void
-parole_player_media_state_cb (ParoleGst *gst, const ParoleStream *stream, ParoleMediaState state, ParolePlayer *player)
-{
-    gboolean has_video;
-    
-    PAROLE_DEBUG_ENUM ("State callback", state, GST_ENUM_TYPE_MEDIA_STATE);
-    
-    g_object_get (G_OBJECT (stream),
-		  "has-video", &has_video,
-		  NULL);
-    
-    if ( state == PAROLE_MEDIA_STATE_PLAYING && has_video )
-	parole_screen_saver_inhibit (player->priv->screen_saver);
-    else
-	parole_screen_saver_uninhibit (player->priv->screen_saver);
-
-    if ( state == PAROLE_MEDIA_STATE_PLAYING )
-    {
-	parole_player_playing (player, stream);
-    }
-    else if ( state == PAROLE_MEDIA_STATE_PAUSED )
-    {
-	parole_player_paused (player);
-    }
-    else if ( state == PAROLE_MEDIA_STATE_STOPPED )
-    {
-	parole_player_stopped (player);
-    }
-    else if ( state == PAROLE_MEDIA_STATE_FINISHED )
-    {
-	TRACE ("***Playback finished***");
-	parole_player_play_next (player, TRUE);
-    }
-}
-
-void
-parole_player_play_pause_clicked (GtkButton *button, ParolePlayer *player)
-{
-    if ( player->priv->state == PAROLE_MEDIA_STATE_PLAYING )
-	parole_gst_pause (PAROLE_GST (player->priv->gst));
-    else if ( player->priv->state == PAROLE_MEDIA_STATE_PAUSED )
-	parole_gst_resume (PAROLE_GST (player->priv->gst));
-    else
-	parole_player_play_selected_row (player);
-}
-
-void
-parole_player_stop_clicked (GtkButton *button, ParolePlayer *player)
-{
-    parole_gst_stop (PAROLE_GST (player->priv->gst));
-}
-
-/*
- * Seek 5%
- */
-static gdouble
-parole_player_get_seek_value (ParolePlayer *player)
-{
-    gdouble val;
-    gdouble dur;
-    
-    dur = parole_gst_get_stream_duration (PAROLE_GST (player->priv->gst));
-    
-    val = dur * 5 /100;
-    
-    return val;
-}
-
-void parole_player_seekf_cb (GtkButton *button, ParolePlayer *player)
-{
-    gdouble seek;
-    
-    seek =  parole_gst_get_stream_position (PAROLE_GST (player->priv->gst) )
-	    +
-	    parole_player_get_seek_value (player);
-	    
-    parole_gst_seek (PAROLE_GST (player->priv->gst), seek);
-}
-							 
-void parole_player_seekb_cb (GtkButton *button, ParolePlayer *player)
-{
-    gdouble seek;
-    
-    seek =  parole_gst_get_stream_position (PAROLE_GST (player->priv->gst) )
-	    -
-	    parole_player_get_seek_value (player);
-	    
-    parole_gst_seek (PAROLE_GST (player->priv->gst), seek);
-}
-
-gboolean parole_player_scroll_event_cb (GtkWidget *widget, GdkEventScroll *ev, ParolePlayer *player)
-{
-    gboolean ret_val = FALSE;
-    
-    if ( ev->direction == GDK_SCROLL_UP )
-    {
-	parole_player_seekf_cb (NULL, player);
-        ret_val = TRUE;
-    }
-    else if ( ev->direction == GDK_SCROLL_DOWN )
-    {
-	parole_player_seekf_cb (NULL, player);
-        ret_val = TRUE;
-    }
-
-    return ret_val;
-}
-
-gboolean
-parole_player_range_button_release (GtkWidget *widget, GdkEventButton *ev, ParolePlayer *player)
-{
-    ev->button = 2;
-    
-    player->priv->user_seeking = FALSE;
-    
-    return FALSE;
-}
-
-gboolean
-parole_player_range_button_press (GtkWidget *widget, GdkEventButton *ev, ParolePlayer *player)
-{
-    ev->button = 2;
-    
-    player->priv->user_seeking = TRUE;
-    
-    return FALSE;
-}
-
-void
-parole_player_range_value_changed (GtkRange *range, ParolePlayer *player)
-{
-    gdouble value;
-    
-    if ( !player->priv->internal_range_change )
-    {
-	value = gtk_range_get_value (GTK_RANGE (range));
-	player->priv->user_seeking = TRUE;
-	TRACE ("Sending a seek request with value :%e", value);
-	parole_gst_seek (PAROLE_GST (player->priv->gst), value);
-	player->priv->user_seeking = FALSE;
-    }
-}
-
-static void
-parole_player_error_cb (ParoleGst *gst, const gchar *error, ParolePlayer *player)
-{
-    xfce_err ("%s", error);
-    parole_screen_saver_uninhibit (player->priv->screen_saver);
-    parole_player_stopped (player);
-}
-
-static void
-parole_player_media_tag_cb (ParoleGst *gst, const ParoleStream *stream, ParolePlayer *player)
-{
-    gchar *title;
-    
-    if ( player->priv->row )
-    {
-	g_object_get (G_OBJECT (stream),
-		      "title", &title,
-		      NULL);
-	if ( title )
-	{
-	    parole_media_list_set_row_name (player->priv->list, player->priv->row, title);
-	    g_free (title);
-	}
-    }
-}
-
-static void
-parole_player_buffering_cb (ParoleGst *gst, const ParoleStream *stream, gint percentage, ParolePlayer *player)
-{
-    if ( percentage == 100 )
-    {
-	player->priv->buffering = FALSE;
-	parole_gst_resume (PAROLE_GST (player->priv->gst));
-    }
-    else
-    {
-	player->priv->buffering = TRUE;
-	
-	if ( player->priv->state == PAROLE_MEDIA_STATE_PLAYING )
-	    parole_gst_pause (PAROLE_GST (player->priv->gst));
-    }
-}
-
-gboolean parole_player_delete_event_cb (GtkWidget *widget, GdkEvent *ev, ParolePlayer *player)
-{
-    parole_window_busy_cursor (GTK_WIDGET (player->priv->window)->window);
-    
-    player->priv->exit = TRUE;
-    parole_gst_terminate (PAROLE_GST (player->priv->gst));
-    
-    return TRUE;
-}
-
-void
-parole_player_destroy_cb (GtkObject *window, ParolePlayer *player)
-{
-}
-
-static void
-parole_player_play_menu_item_activate (ParolePlayer *player)
-{
-    gtk_widget_activate (player->priv->play_pause);
-}
-
-static void
-parole_player_stop_menu_item_activate (ParolePlayer *player)
-{
-    gtk_widget_activate (player->priv->stop);
-}
-
-static void
-parole_player_next_menu_item_activate (ParolePlayer *player)
-{
-    parole_disc_menu_seek_next (player->priv->disc_menu);
-}
-
-static void
-parole_player_previous_menu_item_activate (ParolePlayer *player)
-{
-    parole_disc_menu_seek_prev (player->priv->disc_menu);
-}
-
-static void
-parole_player_move_fs_window (ParolePlayer *player)
-{
-    GdkScreen *screen;
-    GdkRectangle rect;
-    
-    screen = gtk_window_get_screen (GTK_WINDOW (player->priv->fs_window));
-    
-    gdk_screen_get_monitor_geometry (screen,
-				     gdk_screen_get_monitor_at_window (screen, player->priv->window->window),
-				     &rect);
-    
-    gtk_window_resize (GTK_WINDOW (player->priv->fs_window), 
-		       rect.width, 
-		       player->priv->play_box->allocation.width);
-    
-    gtk_window_move (GTK_WINDOW (player->priv->fs_window),
-		     0, 
-		     rect.height + rect.y - player->priv->play_box->allocation.height);
-}
-
-static void
-parole_player_full_screen (ParolePlayer *player, gboolean fullscreen)
-{
-    gint npages;
-    static gint current_page = 0;
-    
-    if ( player->priv->full_screen == fullscreen )
-	return;
-    
-    if ( player->priv->full_screen )
-    {
-	npages = gtk_notebook_get_n_pages (GTK_NOTEBOOK (player->priv->main_nt));
-	gtk_widget_reparent (player->priv->play_box, player->priv->control);
-	gtk_widget_hide (player->priv->fs_window);
-	parole_statusbar_set_visible (player->priv->status, TRUE);
-	parole_disc_menu_set_fullscreen (player->priv->disc_menu, FALSE);
-	gtk_widget_show (player->priv->play_box);
-	gtk_widget_show (player->priv->menu_bar);
-	gtk_widget_show (player->priv->playlist_nt);
-	gtk_widget_show (player->priv->show_hide_playlist);
-	gtk_widget_hide (player->priv->leave_fs);
-	
-	gtk_notebook_set_show_tabs (GTK_NOTEBOOK (player->priv->main_nt), npages > 1);
-	
-	gtk_window_unfullscreen (GTK_WINDOW (player->priv->window));
-	gtk_notebook_set_current_page (GTK_NOTEBOOK (player->priv->playlist_nt), current_page);
-	player->priv->full_screen = FALSE;
-    }
-    else
-    {
-	parole_disc_menu_set_fullscreen (player->priv->disc_menu, TRUE);
-	parole_player_move_fs_window (player);
-	gtk_widget_reparent (player->priv->play_box, player->priv->fs_window);
-	
-	parole_statusbar_set_visible (player->priv->status, FALSE);
-	
-	gtk_widget_hide (player->priv->play_box);
-	gtk_widget_hide (player->priv->menu_bar);
-	gtk_widget_hide (player->priv->playlist_nt);
-	gtk_widget_hide (player->priv->show_hide_playlist);
-	gtk_widget_show (player->priv->leave_fs);
-	
-	current_page = gtk_notebook_get_current_page (GTK_NOTEBOOK (player->priv->playlist_nt));
-	gtk_notebook_set_show_tabs (GTK_NOTEBOOK (player->priv->main_nt), FALSE);
-	
-	gtk_window_fullscreen (GTK_WINDOW (player->priv->window));
-	player->priv->full_screen = TRUE;
-    }
-}
-
-static void
-parole_player_full_screen_menu_item_activate (ParolePlayer *player)
-{
-    parole_player_full_screen (player, !player->priv->full_screen);
-}
-
-void parole_player_full_screen_activated_cb (GtkWidget *widget, ParolePlayer *player)
-{
-    parole_player_full_screen_menu_item_activate (player);
-}
-
-void parole_player_leave_fs_cb (GtkButton *button, ParolePlayer *player)
-{
-    parole_player_full_screen_menu_item_activate (player);
-}
-
-static void
-parole_player_show_menu (ParolePlayer *player, guint button, guint activate_time)
-{
-    GtkWidget *menu, *mi, *img;
-    gboolean sensitive;
-    gboolean dvd_menu;
-    ParoleMediaType media_type;
-    
-    dvd_menu = parole_disc_menu_visible (player->priv->disc_menu);
-    
-    media_type = parole_gst_get_current_stream_type (PAROLE_GST (player->priv->gst));
-    
-    menu = gtk_menu_new ();
-    
-    /*Play menu item
-     */
-    mi = gtk_image_menu_item_new_from_stock (player->priv->state == PAROLE_MEDIA_STATE_PLAYING 
-					     ? GTK_STOCK_MEDIA_PAUSE : GTK_STOCK_MEDIA_PLAY, 
-					     NULL);
-					     
-    g_object_get (G_OBJECT (player->priv->play_pause),
-		  "sensitive", &sensitive,
-		  NULL);
-		  
-    gtk_widget_set_sensitive (mi, sensitive);
-    gtk_widget_show (mi);
-    g_signal_connect_swapped (mi, "activate",
-			      G_CALLBACK (parole_player_play_menu_item_activate), player);
-    gtk_menu_shell_append (GTK_MENU_SHELL (menu), mi);
-    
-    /*
-     * Seek Forward.
-     */
-    mi = gtk_image_menu_item_new_from_stock (GTK_STOCK_MEDIA_FORWARD, NULL);
-					     
-    gtk_widget_set_sensitive (mi, (player->priv->state >= PAROLE_MEDIA_STATE_PAUSED));
-    gtk_widget_show (mi);
-    g_signal_connect (mi, "activate",
-		      G_CALLBACK (parole_player_seekf_cb), player);
-    gtk_menu_shell_append (GTK_MENU_SHELL (menu), mi);
-    
-    /*
-     * Seek backward.
-     */
-    mi = gtk_image_menu_item_new_from_stock (GTK_STOCK_MEDIA_REWIND, NULL);
-					     
-    gtk_widget_set_sensitive (mi, (player->priv->state >= PAROLE_MEDIA_STATE_PAUSED));
-    gtk_widget_show (mi);
-    g_signal_connect (mi, "activate",
-		      G_CALLBACK (parole_player_seekb_cb), player);
-    gtk_menu_shell_append (GTK_MENU_SHELL (menu), mi);
-    
-    /*
-     * Stop menu item
-     */
-    mi = gtk_image_menu_item_new_from_stock (GTK_STOCK_MEDIA_STOP, NULL);
-					     
-    gtk_widget_set_sensitive (mi, player->priv->state == PAROLE_MEDIA_STATE_PLAYING);
-    gtk_widget_show (mi);
-    g_signal_connect_swapped (mi, "activate",
-			      G_CALLBACK (parole_player_stop_menu_item_activate), player);
-    gtk_menu_shell_append (GTK_MENU_SHELL (menu), mi);
-    
-    /*
-     * Next chapter menu item
-     */
-    mi = gtk_image_menu_item_new_with_label (media_type == PAROLE_MEDIA_TYPE_CDDA ? _("Next Track") : _("Next Chapter"));
-    img = gtk_image_new_from_stock (GTK_STOCK_MEDIA_NEXT, GTK_ICON_SIZE_MENU);
-    gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (mi),img);
-    gtk_widget_set_sensitive (mi, (player->priv->state == PAROLE_MEDIA_STATE_PLAYING) && dvd_menu);
-    gtk_widget_show (mi);
-    g_signal_connect_swapped (mi, "activate",
-			      G_CALLBACK (parole_player_next_menu_item_activate), player);
-    gtk_menu_shell_append (GTK_MENU_SHELL (menu), mi);
-    
-    /*
-     * Previous chapter menu item
-     */
-    mi = gtk_image_menu_item_new_with_label (media_type == PAROLE_MEDIA_TYPE_CDDA ? _("Previous Track") : _("Previous Chapter"));
-    img = gtk_image_new_from_stock (GTK_STOCK_MEDIA_PREVIOUS, GTK_ICON_SIZE_MENU);
-    gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (mi), img);
-					     
-    gtk_widget_set_sensitive (mi, (player->priv->state == PAROLE_MEDIA_STATE_PLAYING) && dvd_menu);
-    gtk_widget_show (mi);
-    g_signal_connect_swapped (mi, "activate",
-			      G_CALLBACK (parole_player_previous_menu_item_activate), player);
-    gtk_menu_shell_append (GTK_MENU_SHELL (menu), mi);
-    
-    mi = gtk_separator_menu_item_new ();
-    gtk_widget_show (mi);
-    gtk_menu_shell_append (GTK_MENU_SHELL (menu), mi);
-    
-    /*
-     * Un/Full screen
-     */
-    mi = gtk_image_menu_item_new_from_stock (player->priv->full_screen ? GTK_STOCK_LEAVE_FULLSCREEN:
-					     GTK_STOCK_FULLSCREEN, NULL);
-    gtk_widget_show (mi);
-    g_signal_connect_swapped (mi, "activate",
-			      G_CALLBACK (parole_player_full_screen_menu_item_activate), player);
-    gtk_menu_shell_append (GTK_MENU_SHELL (menu), mi);
-    
-
-    g_signal_connect_swapped (menu, "selection-done",
-			      G_CALLBACK (gtk_widget_destroy), menu);
-    
-    gtk_menu_popup (GTK_MENU (menu), 
-		    NULL, NULL,
-		    NULL, NULL,
-		    button, activate_time);
-}
-
-static gboolean
-parole_player_gst_widget_button_release (GtkWidget *widget, GdkEventButton *ev, ParolePlayer *player)
-{
-    gboolean ret_val = FALSE;
-
-    if ( ev->button == 3 )
-    {
-	parole_player_show_menu (player, ev->button, ev->time);
-	gtk_widget_grab_focus (widget);
-	ret_val = TRUE;
-    }
-    else if ( ev->button == 1 )
-    {
-	gtk_widget_grab_focus (widget);
-    }
-    
-    return ret_val;
-}
-
-static gboolean parole_player_hide_fs_window (gpointer data)
-{
-    ParolePlayer *player;
-    
-    player = PAROLE_PLAYER (data);
-    
-    if ( GTK_WIDGET_VISIBLE (player->priv->fs_window) )
-    {
-	gtk_widget_hide (player->priv->fs_window);
-    }
-
-    return FALSE;
-}
-
-static gboolean
-parole_player_gst_widget_motion_notify_event (GtkWidget *widget, GdkEventMotion *ev, ParolePlayer *player)
-{
-    static gulong hide_timeout = 0;
-    
-    if ( player->priv->full_screen )
-    {
-	gtk_widget_show_all (player->priv->fs_window);
-	if ( hide_timeout != 0 )
-	{
-	    g_source_remove (hide_timeout);
-	    hide_timeout = 0;
-	}
-	    
-	hide_timeout = g_timeout_add_seconds (4, (GSourceFunc) parole_player_hide_fs_window, player);
-    }
-    else if ( hide_timeout != 0)
-    {
-	g_source_remove (hide_timeout);
-	hide_timeout = 0;
-    }
-    
-    return FALSE;
-}
-
-void
-parole_player_menu_open_location_cb (GtkWidget *widget, ParolePlayer *player)
-{
-    parole_media_list_open_location (player->priv->list);
-}
-
-void
-parole_player_menu_add_cb (GtkWidget *widget, ParolePlayer *player)
-{
-    parole_media_list_open (player->priv->list);
-}
-
-void parole_player_open_preferences_cb	(GtkWidget *widget, ParolePlayer *player)
-{
-    ParoleConfDialog *dialog;
-    
-    dialog = parole_conf_dialog_new ();
-    
-    parole_conf_dialog_open (dialog, player->priv->window);
-}
-
-void
-parole_player_menu_exit_cb (GtkWidget *widget, ParolePlayer *player)
-{
-    parole_player_delete_event_cb (NULL, NULL, player);
-}
-
-
-void parole_player_shuffle_toggled_cb (GtkWidget *widget, ParolePlayer *player)
-{
-    gboolean toggled;
-    
-    toggled = gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (widget));
-    
-    g_object_set (G_OBJECT (player->priv->conf),
-		  "shuffle", toggled,
-		  NULL);
-}
-
-void parole_player_repeat_toggled_cb (GtkWidget *widget, ParolePlayer *player)
-{
-    gboolean toggled;
-    
-    toggled = gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (widget));
-    
-    g_object_set (G_OBJECT (player->priv->conf),
-		  "repeat", toggled,
-		  NULL);
-}
-
-static const gchar *
-parole_player_get_volume_icon_name (gdouble value)
-{
-    if ( value == 1. )
-	return "audio-volume-high";
-    else if ( value > 0.5 )
-	return "audio-volume-medium";
-    else if ( value > 0 )
-	return "audio-volume-low";
-    
-    return "audio-volume-muted";
-}
-
-static void
-parole_player_set_volume_image (ParolePlayer *player, gdouble value)
-{
-    GdkPixbuf *icon;
-
-    icon = parole_icon_load (parole_player_get_volume_icon_name (value), 
-			     player->priv->volume_image->allocation.width);
-    if ( icon )
-    {
-	g_object_set (G_OBJECT (player->priv->volume_image),
-		      "pixbuf", icon,
-		      NULL);
-	gdk_pixbuf_unref (icon);
-    }
-}
-
-static void
-parole_player_change_volume (ParolePlayer *player, gdouble value)
-{
-    parole_gst_set_volume (PAROLE_GST (player->priv->gst), value);
-    parole_player_set_volume_image (player, value);
-}
-
-void
-parole_player_volume_value_changed_cb (GtkRange *range, ParolePlayer *player)
-{
-    gdouble value;
-    value = gtk_range_get_value (range);
-    parole_player_change_volume (player, value);
-    parole_rc_write_entry_int ("volume", PAROLE_RC_GROUP_GENERAL, (gint)(value * 100));
-}
-
-void
-parole_player_volume_up (GtkWidget *widget, ParolePlayer *player)
-{
-    gdouble value;
-    value = gtk_range_get_value (GTK_RANGE (player->priv->volume));
-    gtk_range_set_value (GTK_RANGE (player->priv->volume), value + 0.1);
-}
-
-void
-parole_player_volume_down (GtkWidget *widget, ParolePlayer *player)
-{
-    gdouble value;
-    value = gtk_range_get_value (GTK_RANGE (player->priv->volume));
-    gtk_range_set_value (GTK_RANGE (player->priv->volume), value - 0.1);
-}
-
-void parole_player_volume_muted (GtkWidget *widget, ParolePlayer *player)
-{
-    gtk_range_set_value (GTK_RANGE (player->priv->volume), 0);
-}
-
-static void
-parole_player_screen_size_change_changed_cb (GdkScreen *screen, ParolePlayer *player)
-{
-    if ( player->priv->full_screen )
-	parole_player_move_fs_window (player);
-}
-
-static void
-parole_player_finalize (GObject *object)
-{
-    ParolePlayer *player;
-
-    player = PAROLE_PLAYER (object);
-
-    TRACE ("start");
-    g_object_unref (player->priv->video_filter);
-    g_object_unref (player->priv->status);
-    g_object_unref (player->priv->disc);
-    g_object_unref (player->priv->disc_menu);
-    g_object_unref (player->priv->conf);
-    g_object_unref (player->priv->screen_saver);
-    
-#ifdef HAVE_XF86_KEYSYM
-    g_object_unref (player->priv->button);
-#endif
-
-    gtk_widget_destroy (player->priv->fs_window);
-
-    G_OBJECT_CLASS (parole_player_parent_class)->finalize (object);
-}
-
-static void
-parole_player_class_init (ParolePlayerClass *klass)
-{
-    GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
-    object_class->finalize = parole_player_finalize;
-
-    g_type_class_add_private (klass, sizeof (ParolePlayerPrivate));
-    
-    parole_player_dbus_class_init (klass);
-}
-
-static gboolean
-parole_player_handle_key_press (GdkEventKey *ev, ParolePlayer *player)
-{
-    GtkWidget *focused;
-    
-    gboolean ret_val = FALSE;
-    
-    focused = gtk_window_get_focus (GTK_WINDOW (player->priv->window));
-    
-    if ( focused )
-    {
-	if ( ( gtk_widget_is_ancestor (focused, player->priv->playlist_nt) ) ||
-	     ( gtk_widget_is_ancestor (focused, player->priv->main_nt) && 
-	       !gtk_widget_is_ancestor (focused, player->priv->main_box) ))
-	{
-	    return FALSE;
-	}
-    }
-    
-    switch (ev->keyval)
-    {
-	case GDK_F11:
-	case GDK_f:
-	case GDK_F:
-	    parole_player_full_screen_menu_item_activate (player);
-	    ret_val = TRUE;
-	    break;
-	case GDK_plus:
-	    parole_player_volume_up (NULL, player);
-	    ret_val = TRUE;
-	    break;
-	case GDK_space:
-	case GDK_p:
-	case GDK_P:
-	    parole_player_play_pause_clicked (NULL, player);
-	    ret_val = TRUE;
-	    break;
-	case GDK_minus:
-	    parole_player_volume_down (NULL, player);
-	    ret_val = TRUE;
-	    break;
-	case GDK_Right:
-	    /* Media seekable ?*/
-	    if ( GTK_WIDGET_SENSITIVE (player->priv->range) )
-		parole_player_seekf_cb (NULL, player);
-	    ret_val = TRUE;
-	    break;
-	case GDK_Left:
-	    if ( GTK_WIDGET_SENSITIVE (player->priv->range) )
-		parole_player_seekb_cb (NULL, player);
-	    ret_val = TRUE;
-	    break;
-	case GDK_s:
-	case GDK_S:
-	    parole_player_stop_clicked (NULL, player);
-	    ret_val = TRUE;
-	    break;
-	case GDK_Escape:
-	    parole_player_full_screen (player, FALSE);
-	    break;
-#ifdef HAVE_XF86_KEYSYM
-	case XF86XK_OpenURL:
-	    parole_player_full_screen (player, FALSE);
-	    parole_media_list_open_location (player->priv->list);
-	    break;
-#endif
-	case GDK_O:
-	case GDK_o:
-	    if ( ev->state & GDK_CONTROL_MASK )
-	    {
-		parole_player_full_screen (player, FALSE);
-		parole_media_list_open (player->priv->list);
-	    }
-	break;
-	/* 
-	 * Pass these to the media list and tell it to
-	 * grab the focus
-	 */
-	case GDK_Up:
-	case GDK_Down:
-	    parole_media_list_grab_focus (player->priv->list);
-	    break;
-	default:
-	    break;
-    }
-    
-    return ret_val;
-}
-
-gboolean
-parole_player_key_press (GtkWidget *widget, GdkEventKey *ev, ParolePlayer *player)
-{
-/*
-    gchar *key;
-    key = gdk_keyval_name (ev->keyval);
-    g_print ("Key Press 0x%X:%s on widget=%s\n", ev->keyval, key, gtk_widget_get_name (widget));
-*/
-
-    switch (ev->keyval)
-    {
-	case GDK_F11:
-	    parole_player_full_screen_menu_item_activate (player);
-	    return TRUE;
-#ifdef HAVE_XF86_KEYSYM
-	case XF86XK_AudioPlay:
-	    parole_player_play_pause_clicked (NULL, player);
-	    return TRUE;
-	case XF86XK_AudioStop:
-	    parole_player_stop_clicked (NULL, player);
-	    return TRUE;
-	case XF86XK_AudioRaiseVolume:
-	    parole_player_volume_up (NULL, player);
-	    return TRUE;
-	case XF86XK_AudioLowerVolume:
-	    parole_player_volume_down (NULL, player);
-	    return TRUE;
-	case XF86XK_AudioMute:
-	    parole_player_volume_muted (NULL, player);
-	    return TRUE;
-	case XF86XK_AudioPrev:
-	    if ( !parole_disc_menu_seek_prev (player->priv->disc_menu))
-		parole_player_play_prev (player);
-	    return TRUE;
-	case XF86XK_AudioNext:
-	    if ( !parole_disc_menu_seek_next (player->priv->disc_menu))
-		parole_player_play_next (player, FALSE);
-	    return TRUE;
-#endif /* HAVE_XF86_KEYSYM */
-	default:
-	    break;
-    }
-    
-    return parole_player_handle_key_press (ev, player);
-}
-
-#ifdef HAVE_XF86_KEYSYM
-static void
-parole_player_button_pressed_cb (ParoleButton *button, ParoleButtonKey key, ParolePlayer *player)
-{
-    PAROLE_DEBUG_ENUM ("Button Press:", key, ENUM_GTYPE_BUTTON_KEY);
-    
-    switch (key)
-    {
-	case PAROLE_KEY_AUDIO_PLAY:
-	    parole_player_play_pause_clicked (NULL, player);
-	    break;
-	case PAROLE_KEY_AUDIO_STOP:
-	    parole_player_stop_clicked (NULL, player);
-	    break;
-	case PAROLE_KEY_AUDIO_PREV:
-	    if ( !parole_disc_menu_seek_prev (player->priv->disc_menu))
-		parole_player_play_prev (player);
-	    break;
-	case PAROLE_KEY_AUDIO_NEXT:
-	    if ( !parole_disc_menu_seek_next (player->priv->disc_menu))
-		parole_player_play_next (player, FALSE);
-	    break;
-	default:
-	    break;
-    }
-}
-#endif
-
-static void
-parole_player_session_die_cb (ParolePlayer *player)
-{
-    player->priv->exit = TRUE;
-    parole_gst_terminate (PAROLE_GST (player->priv->gst));
-}
-
-static void
-parole_gst_set_default_aspect_ratio (ParolePlayer *player, GtkBuilder *builder)
-{
-    ParoleAspectRatio ratio;
-    const gchar *widget_name;
-    
-    g_object_get (G_OBJECT (player->priv->conf),
-		  "aspect-ratio", &ratio,
-		  NULL);
-		  
-    switch (ratio )
-    {
-	case PAROLE_ASPECT_RATIO_NONE:
-	    widget_name = "ratio_none";
-	    break;
-	case PAROLE_ASPECT_RATIO_AUTO:
-	    widget_name = "ratio_auto";
-	    break;
-	case PAROLE_ASPECT_RATIO_SQUARE:
-	    widget_name = "ratio_square";
-	    break;
-	case PAROLE_ASPECT_RATIO_16_9:
-	    widget_name = "ratio_16_9";
-	    break;
-	case PAROLE_ASPECT_RATIO_4_3:
-	    widget_name = "ratio_4_3";
-	    break;
-	case PAROLE_ASPECT_RATIO_DVB:
-	    widget_name = "ratio_20_9";
-	    break;
-	default:
-	    g_warn_if_reached ();
-	    return;
-    }
-	
-    gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (gtk_builder_get_object (builder, widget_name)), 
-				    TRUE);
-}
-
-static void
-parole_player_set_sound_menu_items_image (GtkBuilder *builder)
-{
-    GtkWidget *img;
-    
-    img = gtk_image_new_from_icon_name ("audio-volume-muted", GTK_ICON_SIZE_MENU);
-    gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (gtk_builder_get_object (builder, "volume-mute-menu")), img);
-    
-    img = gtk_image_new_from_icon_name ("audio-volume-high", GTK_ICON_SIZE_MENU);
-    gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (gtk_builder_get_object (builder, "volume-up-menu")), img);
-    
-    img = gtk_image_new_from_icon_name ("audio-volume-low", GTK_ICON_SIZE_MENU);
-    gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (gtk_builder_get_object (builder, "volume-down-menu")), img);
-}
-
-gboolean
-parole_player_configure_event_cb (GtkWidget *widget, GdkEventConfigure *ev, ParolePlayer *player)
-{
-    gint w,h;
-    
-    if ( !player->priv->full_screen )
-    {
-	gtk_window_get_size (GTK_WINDOW (widget), &w, &h);
-	g_object_set (G_OBJECT (player->priv->conf),
-		      "window-width", w,
-		      "window-height", h,
-		      NULL);
-    }
-    
-    return FALSE;
-}
-
-static void
-parole_player_drag_data_received_cb (GtkWidget *widget,
-				     GdkDragContext *drag_context,
-				     gint x,
-				     gint y,
-				     GtkSelectionData *data,
-				     guint info,
-				     guint drag_time,
-				     ParolePlayer *player)
-{
-    
-    gchar **uri_list;
-    guint added  = 0;
-    guint i;
-    
-    parole_window_busy_cursor (widget->window);
-    
-    uri_list = g_uri_list_extract_uris ((const gchar *)data->data);
-    for ( i = 0; uri_list[i] != NULL; i++)
-    {
-	gchar *path;
-	path = g_filename_from_uri (uri_list[i], NULL, NULL);
-	added += parole_media_list_add_by_path (player->priv->list, path, i == 0 ? TRUE : FALSE);
-
-	g_free (path);
-    }
-    
-    g_strfreev (uri_list);
-
-    gdk_window_set_cursor (widget->window, NULL);
-    gtk_drag_finish (drag_context, added == i ? TRUE : FALSE, FALSE, drag_time);
-}
-
-static void
-parole_player_window_notify_is_active (ParolePlayer *player)
-{
-    if ( !player->priv->full_screen )
-	return;
-	
-    if (!gtk_window_is_active (GTK_WINDOW (player->priv->window)) )
-    {
-	gtk_widget_hide (player->priv->fs_window);
-	parole_gst_set_cursor_visible (PAROLE_GST (player->priv->gst), TRUE);
-    } 
-    else 
-    {
-	parole_gst_set_cursor_visible (PAROLE_GST (player->priv->gst), FALSE);
-    }
-} 
-
-static void
-parole_player_init (ParolePlayer *player)
-{
-    GtkBuilder *builder;
-    GdkScreen *screen;
-    gint w, h;
-    
-    gboolean repeat, shuffle;
-    
-    player->priv = PAROLE_PLAYER_GET_PRIVATE (player);
-    player->priv->video_filter = parole_get_supported_video_filter ();
-    g_object_ref_sink (player->priv->video_filter);
-    
-    builder = parole_builder_get_main_interface ();
-    
-    player->priv->conf = parole_conf_new ();
-    player->priv->session = parole_session_get ();
-    
-    g_signal_connect_swapped (player->priv->session, "die",
-			      G_CALLBACK (parole_player_session_die_cb), player);
-    
-    player->priv->gst = parole_gst_new (FALSE, player->priv->conf);
-    
-    player->priv->status = parole_statusbar_new ();
-    player->priv->disc = parole_disc_new ();
-    g_signal_connect (player->priv->disc, "disc-selected",
-		      G_CALLBACK (parole_player_disc_selected_cb), player);
-		      
-    player->priv->disc_menu = parole_disc_menu_new ();
-    
-    player->priv->screen_saver = parole_screen_saver_new ();
-    player->priv->list = PAROLE_MEDIA_LIST (parole_media_list_new ());
-    
-    player->priv->state = PAROLE_MEDIA_STATE_STOPPED;
-    player->priv->user_seeking = FALSE;
-    player->priv->internal_range_change = FALSE;
-    player->priv->exit = FALSE;
-    player->priv->full_screen = FALSE;
-    player->priv->buffering = FALSE;
-    player->priv->row = NULL;
-    
-    player->priv->recent = gtk_recent_manager_get_default ();
-    
-    parole_player_set_sound_menu_items_image (builder);
-    /*
-     * Gst signals
-     */
-    g_signal_connect (G_OBJECT (player->priv->gst), "media-state",
-		      G_CALLBACK (parole_player_media_state_cb), player);
-	
-    g_signal_connect (G_OBJECT (player->priv->gst), "media-progressed",
-		      G_CALLBACK (parole_player_media_progressed_cb), player);
-		      
-    g_signal_connect (G_OBJECT (player->priv->gst), "media-tag",
-		      G_CALLBACK (parole_player_media_tag_cb), player);
-    
-    g_signal_connect (G_OBJECT (player->priv->gst), "error",
-		      G_CALLBACK (parole_player_error_cb), player);
-   
-    g_signal_connect (G_OBJECT (player->priv->gst), "buffering",
-		      G_CALLBACK (parole_player_buffering_cb), player);
-    
-    g_signal_connect_after (G_OBJECT (player->priv->gst), "button-release-event",
-			    G_CALLBACK (parole_player_gst_widget_button_release), player);
-    
-    g_signal_connect (G_OBJECT (player->priv->gst), "motion-notify-event",
-		      G_CALLBACK (parole_player_gst_widget_motion_notify_event), player);
-    
-    gtk_drag_dest_set (player->priv->gst, GTK_DEST_DEFAULT_ALL, 
-		       target_entry, G_N_ELEMENTS (target_entry),
-                       GDK_ACTION_COPY | GDK_ACTION_MOVE);
-		       
-    g_signal_connect (G_OBJECT (player->priv->gst), "drag-data-received",
-		      G_CALLBACK (parole_player_drag_data_received_cb), player);
-    
-    player->priv->window = GTK_WIDGET (gtk_builder_get_object (builder, "main-window"));
-    player->priv->main_nt = GTK_WIDGET (gtk_builder_get_object (builder, "main-notebook"));
-    
-    player->priv->play_pause = GTK_WIDGET (gtk_builder_get_object (builder, "play-pause"));
-    player->priv->stop = GTK_WIDGET (gtk_builder_get_object (builder, "stop"));
-    player->priv->seekf = GTK_WIDGET (gtk_builder_get_object (builder, "forward"));
-    player->priv->seekb = GTK_WIDGET (gtk_builder_get_object (builder, "back"));
-     
-    player->priv->range = GTK_WIDGET (gtk_builder_get_object (builder, "scale"));
-    
-    player->priv->volume = GTK_WIDGET (gtk_builder_get_object (builder, "volume"));
-    player->priv->volume_image = GTK_WIDGET (gtk_builder_get_object (builder, "volume-image"));
-    
-    player->priv->menu_bar = GTK_WIDGET (gtk_builder_get_object (builder, "menubar"));
-    player->priv->play_box = GTK_WIDGET (gtk_builder_get_object (builder, "play-box"));
-    player->priv->playlist_nt = GTK_WIDGET (gtk_builder_get_object (builder, "notebook-playlist"));
-    player->priv->show_hide_playlist = GTK_WIDGET (gtk_builder_get_object (builder, "show-hide-list"));
-    player->priv->control = GTK_WIDGET (gtk_builder_get_object (builder, "control"));
-    player->priv->leave_fs = GTK_WIDGET (gtk_builder_get_object (builder, "leave_fs"));
-    player->priv->main_box = GTK_WIDGET (gtk_builder_get_object (builder, "main-box"));
-    
-    gtk_range_set_range (GTK_RANGE (player->priv->volume), 0, 1.0);
-    
-    gtk_range_set_value (GTK_RANGE (player->priv->volume), 
-			 (gdouble) (parole_rc_read_entry_int ("volume", PAROLE_RC_GROUP_GENERAL, 100)/100.));
-    
-    /*
-     * Pack the playlist.
-     */
-    gtk_notebook_append_page (GTK_NOTEBOOK (player->priv->playlist_nt), 
-			      GTK_WIDGET (player->priv->list),
-			      gtk_label_new (_("Playlist")));
-			      
-    g_object_get (G_OBJECT (player->priv->conf),
-		  "window-width", &w,
-		  "window-height", &h,
-		  NULL);
-    
-    gtk_window_set_default_size (GTK_WINDOW (player->priv->window), w, h);
-    
-    gtk_widget_show_all (player->priv->window);
-    
-    gtk_box_pack_start (GTK_BOX (gtk_builder_get_object (builder, "output")), 
-			player->priv->gst,
-			TRUE, TRUE, 0);
-    
-    gtk_widget_realize (player->priv->gst);
-    gtk_widget_show (player->priv->gst);
-
-    parole_player_change_volume (player, 
-				 (gdouble) (parole_rc_read_entry_int ("volume", PAROLE_RC_GROUP_GENERAL, 100)/100.));
-
-    g_signal_connect (player->priv->list, "media_activated",
-		      G_CALLBACK (parole_player_media_activated_cb), player);
-		      
-    g_signal_connect (player->priv->list, "media_cursor_changed",
-		      G_CALLBACK (parole_player_media_cursor_changed_cb), player);
-		      
-    g_signal_connect (player->priv->list, "uri-opened",
-		      G_CALLBACK (parole_player_uri_opened_cb), player);
-    
-    /*
-     * Load auto saved media list.
-     */
-    parole_media_list_load (player->priv->list);
-    
-    g_object_get (G_OBJECT (player->priv->conf),
-		  "repeat", &repeat,
-		  "shuffle", &shuffle,
-		  NULL);
-
-    gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (gtk_builder_get_object (builder, "repeat")),
-				    repeat);
-
-    gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (gtk_builder_get_object (builder, "shuffle")),
-				    shuffle);
-	
-    player->priv->fs_window = gtk_window_new (GTK_WINDOW_POPUP);
-
-    gtk_window_set_gravity (GTK_WINDOW (player->priv->fs_window), GDK_GRAVITY_SOUTH_WEST);
-    gtk_window_set_position (GTK_WINDOW (player->priv->fs_window), GTK_WIN_POS_NONE);
-  
-    parole_gst_set_default_aspect_ratio (player, builder);
-	
-    gtk_builder_connect_signals (builder, player);
-    
-    screen = gtk_widget_get_screen (player->priv->window);
-    g_signal_connect (G_OBJECT (screen), "size-changed",
-		      G_CALLBACK (parole_player_screen_size_change_changed_cb), player);
-    
-    g_object_unref (builder);
-    
-#ifdef HAVE_XF86_KEYSYM
-    player->priv->button = parole_button_new ();
-    g_signal_connect (player->priv->button, "button-pressed",
-		      G_CALLBACK (parole_player_button_pressed_cb), player);
-#endif
-    
-    g_signal_connect_swapped (player->priv->window, "notify::is-active",
-			      G_CALLBACK (parole_player_window_notify_is_active), player);
-    
-    parole_player_dbus_init (player);
-}
-
-ParolePlayer *
-parole_player_new (void)
-{
-    ParolePlayer *player = NULL;
-    player = g_object_new (PAROLE_TYPE_PLAYER, NULL);
-    return player;
-}
-
-ParoleMediaList	*parole_player_get_media_list (ParolePlayer *player)
-{
-    return player->priv->list;
-}
-
-void parole_player_play_uri_disc (ParolePlayer *player, const gchar *uri)
-{
-    parole_player_disc_selected_cb (NULL, uri, NULL, player);
-}
-
-void parole_player_terminate (ParolePlayer *player)
-{
-    parole_player_delete_event_cb (NULL, NULL, player);
-}
-
-
-static gboolean	parole_player_dbus_play (ParolePlayer *player,
-					 GError *error);
-
-static gboolean	parole_player_dbus_stop (ParolePlayer *player,
-					 GError *error);
-
-static gboolean	parole_player_dbus_next_track (ParolePlayer *player,
-					       GError *error);
-
-static gboolean	parole_player_dbus_prev_track (ParolePlayer *player,
-					       GError *error);
-
-static gboolean	parole_player_dbus_seek_forward (ParolePlayer *player,
-					         GError *error);
-
-static gboolean	parole_player_dbus_seek_backward (ParolePlayer *player,
-					          GError *error);
-
-static gboolean	parole_player_dbus_raise_volume (ParolePlayer *player,
-						 GError *error);
-
-static gboolean	parole_player_dbus_lower_volume (ParolePlayer *player,
-						 GError *error);
-					 
-static gboolean	parole_player_dbus_mute (ParolePlayer *player,
-					 GError *error);
-
-#include "org.parole.media.player.h"
-
-/*
- * DBus server implementation
- */
-static void 
-parole_player_dbus_class_init (ParolePlayerClass *klass)
-{
-    
-    dbus_g_object_type_install_info (G_TYPE_FROM_CLASS (klass),
-				     &dbus_glib_parole_player_object_info);
-				     
-}
-
-static void
-parole_player_dbus_init (ParolePlayer *player)
-{
-    dbus_g_connection_register_g_object (parole_g_session_bus_get (),
-					 PAROLE_DBUS_PATH,
-					 G_OBJECT (player));
-}
-
-static gboolean	parole_player_dbus_play (ParolePlayer *player,
-					 GError *error)
-{
-    
-    parole_player_play_pause_clicked (NULL, player);
-    return TRUE;
-}
-
-static gboolean	parole_player_dbus_stop (ParolePlayer *player,
-					 GError *error)
-{
-    parole_gst_stop (PAROLE_GST (player->priv->gst));
-    return TRUE;
-}
-
-static gboolean	parole_player_dbus_next_track (ParolePlayer *player,
-					       GError *error)
-{
-    if ( !parole_disc_menu_seek_next (player->priv->disc_menu))
-	parole_player_play_next (player, FALSE);
-    return TRUE;
-}
-
-static gboolean	parole_player_dbus_prev_track (ParolePlayer *player,
-					       GError *error)
-{
-    if ( !parole_disc_menu_seek_prev (player->priv->disc_menu))
-	parole_player_play_prev (player);
-    return TRUE;
-}
-
-static gboolean	parole_player_dbus_seek_forward (ParolePlayer *player,
-					         GError *error)
-{
-    parole_player_seekf_cb (NULL, player);
-    return TRUE;
-}
-
-static gboolean	parole_player_dbus_seek_backward (ParolePlayer *player,
-					          GError *error)
-{
-    parole_player_seekb_cb (NULL, player);
-    return TRUE;
-}
-					 
-static gboolean	parole_player_dbus_raise_volume (ParolePlayer *player,
-						 GError *error)
-{
-    parole_player_volume_up (NULL, player);
-    return TRUE;
-}
-
-static gboolean	parole_player_dbus_lower_volume (ParolePlayer *player,
-						 GError *error)
-{
-    parole_player_volume_down (NULL, player);
-    return TRUE;
-}
-					 
-static gboolean	parole_player_dbus_mute (ParolePlayer *player,
-					 GError *error)
-{
-    gtk_range_set_value (GTK_RANGE (player->priv->volume), 0);
-    return TRUE;
-}
diff --git a/parole/parole-player.h b/parole/parole-player.h
deleted file mode 100644
index fbbed42..0000000
--- a/parole/parole-player.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#ifndef __PAROLE_PLAYER_H
-#define __PAROLE_PLAYER_H
-
-#include <glib-object.h>
-#include "parole-medialist.h"
-
-G_BEGIN_DECLS
-
-#define PAROLE_TYPE_PLAYER        (parole_player_get_type () )
-#define PAROLE_PLAYER(o)          (G_TYPE_CHECK_INSTANCE_CAST ((o), PAROLE_TYPE_PLAYER, ParolePlayer))
-#define PAROLE_IS_PLAYER(o)       (G_TYPE_CHECK_INSTANCE_TYPE ((o), PAROLE_TYPE_PLAYER))
-
-typedef struct ParolePlayerPrivate ParolePlayerPrivate;
-
-typedef struct
-{
-    GObject         		 parent;
-    ParolePlayerPrivate     	*priv;
-    
-} ParolePlayer;
-
-typedef struct
-{
-    GObjectClass 		 parent_class;
-    
-} ParolePlayerClass;
-
-GType        			 parole_player_get_type        (void) G_GNUC_CONST;
-ParolePlayer       		*parole_player_new             (void);
-
-ParoleMediaList			*parole_player_get_media_list  (ParolePlayer *player);
-
-void				 parole_player_play_uri_disc   (ParolePlayer *player,
-								const gchar *uri);
-
-void				 parole_player_terminate       (ParolePlayer *player);
-
-G_END_DECLS
-
-#endif /* __PAROLE_PLAYER_H */
diff --git a/parole/parole-plugin.c b/parole/parole-plugin.c
deleted file mode 100644
index 8ca83c6..0000000
--- a/parole/parole-plugin.c
+++ /dev/null
@@ -1,662 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "parole-plugin.h"
-#include "parole-plugins-manager.h"
-#include "parole-gst.h"
-#include "gmarshal.h"
-#include "enum-gtypes.h"
-
-static void parole_plugin_finalize     (GObject *object);
-
-static void parole_plugin_set_property (GObject *object,
-				        guint prop_id,
-				        const GValue *value,
-					GParamSpec *pspec);
-			     
-static void parole_plugin_get_property (GObject *object,
-					guint prop_id,
-					GValue *value,
-					GParamSpec *pspec);
-
-#define PAROLE_PLUGIN_GET_PRIVATE(o) \
-(G_TYPE_INSTANCE_GET_PRIVATE ((o), PAROLE_TYPE_PLUGIN, ParolePluginPrivate))
-
-typedef struct _ParolePluginPrivate ParolePluginPrivate;
-
-struct _ParolePluginPrivate
-{
-    ParoleGst *gst;
-    
-    gchar *title;
-    gchar *author;
-    gchar *desc;
-    gchar *site;
-
-    GtkWidget *widget;
-    gboolean packed;
-    
-    gboolean configurable;
-    
-    /* sig id's*/
-    gulong gst_sig1;
-    gulong gst_sig2;
-    gulong gst_sig3;
-    gulong gst_sig4;
-};
-
-enum
-{
-    PROP_0,
-    PROP_TITLE,
-    PROP_DESC,
-    PROP_AUTHOR,
-    PROP_SITE,
-    PROP_CONFIGURABLE
-};
-
-enum
-{
-    STATE_CHANGED,
-    TAG_MESSAGE,
-    PROGRESSED,
-    BUFFERING,
-    FREE_DATA,
-    CONFIGURE,
-    LAST_SIGNAL
-};
-
-static guint signals [LAST_SIGNAL] = { 0 };
-
-G_DEFINE_TYPE (ParolePlugin, parole_plugin, G_TYPE_OBJECT)
-
-static void 
-parole_plugin_media_state_changed_cb (ParoleGst *gst, const ParoleStream *stream, 
-				      ParoleMediaState state, ParolePlugin *plugin)
-{
-    g_signal_emit (G_OBJECT (plugin), signals [STATE_CHANGED], 0, stream, state);
-}
-
-static void 
-parole_plugin_media_tag_cb (ParoleGst *gst, const ParoleStream *stream, ParolePlugin *plugin)
-{
-    g_signal_emit (G_OBJECT (plugin), signals [TAG_MESSAGE], 0, stream);
-}
-
-static void
-parole_plugin_buffering_changed_cb (ParoleGst *gst, const ParoleStream *stream, 
-				    gint percentage, ParolePlugin *plugin)
-{
-    g_signal_emit (G_OBJECT (plugin), signals [BUFFERING], 0, stream, percentage);
-}
-
-static void
-parole_plugin_media_progressed_cb (ParoleGst *gst, const ParoleStream *stream,
-				   gdouble value, ParolePlugin *plugin)
-{
-    g_signal_emit (G_OBJECT (plugin), signals [PROGRESSED], 0, stream, value);
-}
-
-static void
-parole_plugin_class_init (ParolePluginClass *klass)
-{
-    GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
-    object_class->finalize = parole_plugin_finalize;
-
-    object_class->get_property = parole_plugin_get_property;
-    object_class->set_property = parole_plugin_set_property;
-
-    /**
-     * ParolePlugin::state-changed:
-     * @plugin: the object which received the signal.
-     * @stream: a #ParoleStream.
-     * @state: the new state.
-     * 
-     * Since: 0.2 
-     **/
-    signals[STATE_CHANGED] = 
-        g_signal_new ("state-changed",
-                      PAROLE_TYPE_PLUGIN,
-                      G_SIGNAL_RUN_LAST,
-                      G_STRUCT_OFFSET (ParolePluginClass, state_changed),
-                      NULL, NULL,
-                      _gmarshal_VOID__OBJECT_ENUM,
-                      G_TYPE_NONE, 2,
-		      PAROLE_TYPE_STREAM, ENUM_GTYPE_STATE);
-
-    /**
-     * ParolePlugin::tag-message:
-     * @plugin: the object which received the signal.
-     * @stream: a #ParoleStream.
-     * 
-     * Since: 0.2 
-     **/
-    signals[TAG_MESSAGE] = 
-        g_signal_new ("tag-message",
-                      PAROLE_TYPE_PLUGIN,
-                      G_SIGNAL_RUN_LAST,
-                      G_STRUCT_OFFSET (ParolePluginClass, tag_message),
-                      NULL, NULL,
-		      g_cclosure_marshal_VOID__OBJECT,
-                      G_TYPE_NONE, 1, PAROLE_TYPE_STREAM);
-	
-    /**
-     * ParolePlugin::progressed:
-     * @plugin: the object which received the signal.
-     * @stream: a #ParoleStream.
-     * 
-     * Since: 0.2 
-     **/
-    signals[PROGRESSED] = 
-        g_signal_new ("progressed",
-                      PAROLE_TYPE_PLUGIN,
-                      G_SIGNAL_RUN_LAST,
-                      G_STRUCT_OFFSET (ParolePluginClass, progressed),
-                      NULL, NULL,
-                      _gmarshal_VOID__OBJECT_DOUBLE,
-                      G_TYPE_NONE, 2, 
-		      G_TYPE_OBJECT, G_TYPE_DOUBLE);
-
-    /**
-     * ParolePlugin::buffering:
-     * @plugin: the object which received the signal.
-     * @stream: a #ParoleStream.
-     * 
-     * Since: 0.2 
-     **/
-    signals[BUFFERING] = 
-        g_signal_new ("buffering",
-                      PAROLE_TYPE_PLUGIN,
-                      G_SIGNAL_RUN_LAST,
-                      G_STRUCT_OFFSET (ParolePluginClass, buffering),
-                      NULL, NULL,
-                      _gmarshal_VOID__OBJECT_INT,
-                      G_TYPE_NONE, 2, 
-		      G_TYPE_OBJECT, G_TYPE_INT);
-
-    /**
-     * ParolePlugin::free-data:
-     * @plugin: the object which received the signal.
-     * 
-     * Emitted before unloading the plugin from memory, so
-     * any dynamiclly allocated memory should be freed in this signal
-     * handler.
-     * 
-     * Since: 0.2 
-     **/
-    signals [FREE_DATA] = 
-        g_signal_new ("free-data",
-                      PAROLE_TYPE_PLUGIN,
-                      G_SIGNAL_RUN_LAST,
-                      G_STRUCT_OFFSET(ParolePluginClass, free_data),
-                      NULL, NULL,
-                      g_cclosure_marshal_VOID__VOID,
-                      G_TYPE_NONE, 0, G_TYPE_NONE);
-
-    /**
-     * ParolePlugin::configure:
-     * @plugin: the object which received the signal.
-     * 
-     * Emitted when the user click the configure button in the plugins
-     * configuration dialog.
-     * 
-     * Since: 0.2 
-     **/
-    signals [CONFIGURE] = 
-        g_signal_new ("configure",
-                      PAROLE_TYPE_PLUGIN,
-                      G_SIGNAL_RUN_LAST,
-                      G_STRUCT_OFFSET(ParolePluginClass, configure),
-                      NULL, NULL,
-                      g_cclosure_marshal_VOID__OBJECT,
-                      G_TYPE_NONE, 1, GTK_TYPE_WIDGET);
-
-    /**
-     * ParolePlugin:title:
-     * 
-     * Title to display for this plugin.
-     * 
-     * Since: 0.2 
-     **/
-    g_object_class_install_property (object_class,
-                                     PROP_TITLE,
-                                     g_param_spec_string ("title",
-                                                          NULL, NULL,
-                                                          NULL,
-                                                          G_PARAM_READWRITE|
-							  G_PARAM_CONSTRUCT_ONLY));
-
-    /**
-     * ParolePlugin:description:
-     * 
-     * Description of the plugin.
-     * 
-     * Since: 0.2 
-     **/
-    g_object_class_install_property (object_class,
-                                     PROP_DESC,
-                                     g_param_spec_string ("description",
-                                                          NULL, NULL,
-                                                          NULL,
-                                                          G_PARAM_READWRITE|
-							  G_PARAM_CONSTRUCT_ONLY));
-
-    /**
-     * ParolePlugin:author:
-     * 
-     * Author of the plugin.
-     * 
-     * Since: 0.2 
-     **/
-    g_object_class_install_property (object_class,
-                                     PROP_AUTHOR,
-                                     g_param_spec_string ("author",
-                                                          NULL, NULL,
-                                                          NULL,
-                                                          G_PARAM_READWRITE|
-							  G_PARAM_CONSTRUCT_ONLY));
-    
-    /**
-     * ParolePlugin:site:
-     * 
-     * The website of the plugin.
-     * 
-     * Since: 0.2 
-     **/
-    g_object_class_install_property (object_class,
-                                     PROP_SITE,
-                                     g_param_spec_string ("site",
-                                                          NULL, NULL,
-                                                          NULL,
-                                                          G_PARAM_READWRITE|
-							  G_PARAM_CONSTRUCT_ONLY));
-							
-    /**
-     * ParolePlugin:configurable:
-     * 
-     * 
-     * Since: 0.2 
-     **/
-    g_object_class_install_property (object_class,
-                                     PROP_CONFIGURABLE,
-                                     g_param_spec_boolean ("configurable",
-                                                           NULL, NULL,
-                                                           FALSE,
-                                                           G_PARAM_READWRITE));
-							  
-    g_type_class_add_private (klass, sizeof (ParolePluginPrivate));
-}
-
-static void
-parole_plugin_init (ParolePlugin *plugin)
-{
-    ParolePluginPrivate *priv;
-    
-    priv = PAROLE_PLUGIN_GET_PRIVATE (plugin);
-    
-    priv->title  = NULL;
-    priv->desc   = NULL;
-    priv->author = NULL;
-    priv->site   = NULL;
-    priv->packed = FALSE;
-    priv->widget = NULL;
-    priv->configurable = FALSE;
-    
-    priv->gst = PAROLE_GST (parole_gst_get ());
-    
-    priv->gst_sig1 = g_signal_connect (G_OBJECT (priv->gst), "media-state",
-				       G_CALLBACK (parole_plugin_media_state_changed_cb), plugin);
-		      
-    priv->gst_sig2 = g_signal_connect (G_OBJECT (priv->gst), "media-tag",
-				       G_CALLBACK (parole_plugin_media_tag_cb), plugin);
-				       
-    priv->gst_sig3 = g_signal_connect (G_OBJECT (priv->gst), "buffering",
-				       G_CALLBACK (parole_plugin_buffering_changed_cb), plugin);
-				       
-    priv->gst_sig4 = g_signal_connect (G_OBJECT (priv->gst), "media-progressed",
-				       G_CALLBACK (parole_plugin_media_progressed_cb), plugin);
-}
-
-static void parole_plugin_set_property (GObject *object,
-					guint prop_id,
-				        const GValue *value,
-					GParamSpec *pspec)
-{
-    ParolePlugin *plugin;
-    plugin = PAROLE_PLUGIN (object);
-
-    switch (prop_id)
-    {
-	case PROP_TITLE:
-	    PAROLE_PLUGIN_GET_PRIVATE (plugin)->title = g_value_dup_string (value);
-	    break;
-	case PROP_DESC:
-	    PAROLE_PLUGIN_GET_PRIVATE (plugin)->desc = g_value_dup_string (value);
-	    break;
-	case PROP_AUTHOR:
-	    PAROLE_PLUGIN_GET_PRIVATE (plugin)->author = g_value_dup_string (value);
-	    break;
-	case PROP_SITE:
-	    PAROLE_PLUGIN_GET_PRIVATE (plugin)->site = g_value_dup_string (value);
-	    break;
-	case PROP_CONFIGURABLE:
-	    PAROLE_PLUGIN_GET_PRIVATE (plugin)->configurable = g_value_get_boolean (value);
-	    break;
-	default:
-            G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-            break;
-    }
-}
-
-static void parole_plugin_get_property (GObject *object,
-					guint prop_id,
-					GValue *value,
-	
-					GParamSpec *pspec)
-{
-    ParolePlugin *plugin;
-    plugin = PAROLE_PLUGIN (object);
-
-    switch (prop_id)
-    {
-	case PROP_TITLE:
-	    g_value_set_string (value, PAROLE_PLUGIN_GET_PRIVATE (plugin)->title);
-	    break;
-	case PROP_DESC:
-	    g_value_set_string (value, PAROLE_PLUGIN_GET_PRIVATE (plugin)->desc);
-	    break;
-	case PROP_AUTHOR:
-	    g_value_set_string (value, PAROLE_PLUGIN_GET_PRIVATE (plugin)->author);
-	    break;
-	case PROP_SITE:
-	    g_value_set_string (value, PAROLE_PLUGIN_GET_PRIVATE (plugin)->site);
-	    break;
-	case PROP_CONFIGURABLE:
-	    g_value_set_boolean (value, PAROLE_PLUGIN_GET_PRIVATE (plugin)->configurable);
-	    break;
-	default:
-            G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-            break;
-    }
-}
-
-static void
-parole_plugin_finalize (GObject *object)
-{
-    ParolePlugin *plugin;
-    ParolePluginPrivate *priv;
-
-    plugin = PAROLE_PLUGIN (object);
-    
-    priv = PAROLE_PLUGIN_GET_PRIVATE (plugin);
-    
-    if ( G_IS_OBJECT (priv->gst) )
-    {
-	if (g_signal_handler_is_connected (priv->gst, priv->gst_sig1)) 
-	    g_signal_handler_disconnect (priv->gst, priv->gst_sig1);
-
-	if ( g_signal_handler_is_connected (priv->gst, priv->gst_sig2)) 
-	    g_signal_handler_disconnect (priv->gst, priv->gst_sig2);
-	    
-	if ( g_signal_handler_is_connected (priv->gst, priv->gst_sig3)) 
-	    g_signal_handler_disconnect (priv->gst, priv->gst_sig3);
-	    
-	if ( g_signal_handler_is_connected (priv->gst, priv->gst_sig4)) 
-	    g_signal_handler_disconnect (priv->gst, priv->gst_sig4);
-    }
-    
-    if ( priv->title )
-	g_free (priv->title);
-	
-    if ( priv->desc )
-	g_free (priv->desc);
-	
-    if ( priv->author )
-	g_free (priv->author);
-	
-    if ( priv->site )
-	g_free (priv->site);
-	
-    if ( priv->packed && GTK_IS_WIDGET (priv->widget))
-	gtk_widget_destroy (GTK_WIDGET (priv->widget));
-
-    G_OBJECT_CLASS (parole_plugin_parent_class)->finalize (object);
-}
-
-
-/**
- * parole_plugin_new:
- * @title: title.
- * 
- * 
- * 
- * Returns: A new #ParolePlugin object.
- **/
-ParolePlugin *
-parole_plugin_new (const gchar *title, const gchar *desc, const gchar *author, const gchar *website)
-{
-    ParolePlugin *plugin = NULL;
-    
-    plugin = g_object_new (PAROLE_TYPE_PLUGIN, 
-			   "title", title, 
-			   "description", desc,
-			   "author", author,
-			   "site", website,
-			   NULL);
-    return plugin;
-}
-
-/**
- * parole_plugin_get_main_window:
- * @plugin: a #ParolePlugin.
- * 
- * Get the main window of the media player.
- * 
- * Returns: the main window widget.
- **/
-GtkWidget *parole_plugin_get_main_window (ParolePlugin *plugin)
-{
-    ParolePluginPrivate *priv;
-    
-    g_return_val_if_fail (PAROLE_IS_PLUGIN (plugin), NULL);
-    
-    priv = PAROLE_PLUGIN_GET_PRIVATE (plugin);
-    
-    return gtk_widget_get_toplevel (GTK_WIDGET (priv->gst));
-}
-
-/**
- * parole_plugin_pack_widget:
- * @plugin: a #ParolePlugin.
- * @widget: a #GtkWidget.
- * @container: a ParolePluginContainer type.
- * 
- * This function inserts a tab containing the @widget, the tab can be either
- * on the playlist when PAROLE_PLUGIN_CONTAINER_PLAYLIST is specified or in the 
- * main view when PAROLE_PLUGIN_CONTAINER_VIEW is specified.
- *
- * 
- * Note: You can call this function only one time.
- **/
-void parole_plugin_pack_widget (ParolePlugin *plugin, GtkWidget *widget, ParolePluginContainer container)
-{
-    ParolePluginsManager *manager;
-    ParolePluginPrivate *priv;
-    
-    g_return_if_fail (PAROLE_IS_PLUGIN (plugin));
-    
-    priv = PAROLE_PLUGIN_GET_PRIVATE (plugin);
-    
-    g_return_if_fail (priv->packed == FALSE);
-    
-    manager = parole_plugins_manager_get (TRUE);
-
-    parole_plugins_manager_pack (manager, plugin, widget, container);
-
-    g_object_unref (manager);
-    
-    priv->packed = TRUE;
-    priv->widget = widget;
-}
-
-/**
- * parole_plugin_get_state:
- * @plugin: a #ParolePlugin.
- * 
- * 
- * 
- * Returns: The current state of the media player.
- **/
-ParoleState parole_plugin_get_state (ParolePlugin *plugin)
-{
-    ParolePluginPrivate *priv;
-    
-    g_return_val_if_fail (PAROLE_IS_PLUGIN (plugin), PAROLE_STATE_STOPPED);
-    
-    priv = PAROLE_PLUGIN_GET_PRIVATE (plugin);
-    
-    return parole_gst_get_state (priv->gst);
-}
-
-/**
- * parole_plugin_get_is_configurable:
- * @plugin: a #ParolePlugin.
- * 
- * 
- * 
- * Returns: Whether the plugin is configurable.
- **/
-gboolean parole_plugin_get_is_configurable (ParolePlugin *plugin)
-{
-    g_return_val_if_fail (PAROLE_IS_PLUGIN (plugin), FALSE);
-    
-    return PAROLE_PLUGIN_GET_PRIVATE (plugin)->configurable;
-}
-
-/**
- * parole_plugin_set_is_configurable:
- * @plugin: a #ParolePlugin.
- * 
- * 
- * 
- **/
-void parole_plugin_set_is_configurable (ParolePlugin *plugin, gboolean is_configurable)
-{
-    g_return_if_fail (PAROLE_IS_PLUGIN (plugin));
-    
-    PAROLE_PLUGIN_GET_PRIVATE (plugin)->configurable = is_configurable;
-}
-
-/**
- * parole_plugin_play_uri:
- * @plugin: a #ParolePlugin.
- * @uri: uri of the file to play.
- * 
- * Play a uri.
- * 
- * Returns: TRUE on success, FALSE otherwise.
- **/
-gboolean parole_plugin_play_uri (ParolePlugin *plugin, const gchar *uri)
-{
-    g_return_val_if_fail (PAROLE_IS_PLUGIN (plugin), FALSE);
-    g_return_val_if_fail (PAROLE_IS_PLUGIN (uri != NULL), FALSE);
-    
-    parole_gst_play_uri (PAROLE_PLUGIN_GET_PRIVATE (plugin)->gst, uri, NULL);
-    
-    return TRUE;
-}
-
-/**
- * parole_plugin_pause_playback:
- * @plugin: a #ParolePlugin.
- * 
- * Causes the media player to pause any playback.
- * 
- * Returns: TRUE on success, FALSE otherwise.
- **/
-gboolean parole_plugin_pause_playback (ParolePlugin *plugin)
-{
-    g_return_val_if_fail (PAROLE_IS_PLUGIN (plugin), FALSE);
-    
-    parole_gst_pause (PAROLE_PLUGIN_GET_PRIVATE (plugin)->gst);
-    
-    return TRUE;
-}
-
-/**
- * parole_plugin_pause_playback:
- * @plugin: a #ParolePlugin.
- * 
- * Causes the media player to resume playing the currently paused stream.
- * 
- * Returns: TRUE on success, FALSE otherwise.
- **/
-gboolean  parole_plugin_resume_playback (ParolePlugin *plugin)
-{
-    g_return_val_if_fail (PAROLE_IS_PLUGIN (plugin), FALSE);
-    
-    parole_gst_resume (PAROLE_PLUGIN_GET_PRIVATE (plugin)->gst);
-    
-    return TRUE;
-}	
-
-/**
- * parole_plugin_stop_playback:
- * @plugin: a #ParolePlugin.
- * 
- * Causes the media player to stop any playback.
- * 
- * Returns: TRUE on success, FALSE otherwise.
- **/
-gboolean parole_plugin_stop_playback (ParolePlugin *plugin)
-{
-    g_return_val_if_fail (PAROLE_IS_PLUGIN (plugin), FALSE);
-    
-    parole_gst_stop (PAROLE_PLUGIN_GET_PRIVATE (plugin)->gst);
-    
-    return TRUE;
-}
-
-/**
- * parole_plugin_seek:
- * @plugin: a #ParolePlugin.
- * @pos: position.
- * 
- * Seek the current playing stream.
- * 
- * Returns: False is the stream is not seekable or an error occurs, TRUE otherwise.
- **/
-gboolean parole_plugin_seek (ParolePlugin *plugin, gdouble pos)
-{
-    g_return_val_if_fail (PAROLE_IS_PLUGIN (plugin), FALSE);
-    
-    parole_gst_seek (PAROLE_PLUGIN_GET_PRIVATE (plugin)->gst, pos);
-    
-    return TRUE;
-}
diff --git a/parole/parole-plugins-manager.c b/parole/parole-plugins-manager.c
deleted file mode 100644
index 3b10375..0000000
--- a/parole/parole-plugins-manager.c
+++ /dev/null
@@ -1,590 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <glib.h>
-
-#include <libxfce4util/libxfce4util.h>
-
-#include "interfaces/plugins_ui.h"
-
-#include "parole-builder.h"
-#include "parole-rc-utils.h"
-#include "parole-plugins-manager.h"
-#include "parole-module.h"
-
-typedef struct
-{
-    ParolePluginsManager *manager;
-
-    GtkWidget *window;
-    GtkWidget *view;
-    GtkListStore *store;
-    GtkWidget *desc;
-    GtkWidget *author;
-    GtkWidget *site;
-    GtkWidget *configure;
-    
-} PrefData;
-
-void parole_plugins_manager_pref_response_cb		(GtkDialog *dialog,
-							 gint reponse_id,
-							 PrefData *pref);
-
-void parole_plugins_manager_cell_toggled_cb 		(GtkCellRendererToggle *cell_renderer, 
-							 gchar *path, 
-							 PrefData *pref);
-
-void parole_plugins_manager_tree_cursor_changed_cb	(GtkTreeView *view,
-							 PrefData *pref);
-
-void parole_plugins_manager_show_configure		(GtkButton *button,
-							 PrefData *pref);
-
-void parole_plugins_manager_show_about			(GtkButton *button,
-							 PrefData *pref);
-
-static void parole_plugins_manager_finalize     (GObject *object);
-static void parole_plugins_manager_set_property (GObject *object,
-						 guint prop_id,
-						 const GValue *value,
-						 GParamSpec *pspec);
-
-#define PAROLE_PLUGINS_MANAGER_GET_PRIVATE(o) \
-(G_TYPE_INSTANCE_GET_PRIVATE ((o), PAROLE_TYPE_PLUGINS_MANAGER, ParolePluginsManagerPrivate))
-
-struct ParolePluginsManagerPrivate
-{
-    GtkWidget *list_nt;
-    GtkWidget *main_nt;
-    
-    GPtrArray *array;
-    
-    gboolean   load_plugins;
-};
-
-G_DEFINE_TYPE (ParolePluginsManager, parole_plugins_manager, G_TYPE_OBJECT)
-
-enum
-{
-    COL_ACTIVE,
-    COL_PLUGIN,
-    COL_DATA
-};
-
-enum
-{
-    PROP_0,
-    PROP_LOAD_PLUGIN
-};
-
-void parole_plugins_manager_pref_response_cb		(GtkDialog *dialog,
-							 gint reponse_id,
-							 PrefData *pref)
-{
-    gtk_widget_destroy (GTK_WIDGET (dialog));
-    g_free (pref);
-}
-
-static ParoleModule *
-parole_plugins_manager_get_selected_module (PrefData *pref)
-{
-    ParoleModule *module;
-    GtkTreeSelection *sel;
-    GtkTreeModel     *model;
-    GtkTreeIter       iter;
-
-    sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (pref->view));
-
-    if ( !gtk_tree_selection_get_selected (sel, &model, &iter))
-        return NULL;
-
-    gtk_tree_model_get (model,
-                        &iter,
-                        COL_DATA,
-                        &module,
-                        -1);
-    return module;
-}
-
-void parole_plugins_manager_show_configure (GtkButton *button, PrefData *pref)
-{
-    ParoleModule *module;
-    
-    module = parole_plugins_manager_get_selected_module (pref);
-    
-    if ( !module )
-	return;
-	
-    g_signal_emit_by_name (G_OBJECT (module->plugin), "configure", pref->window);
-}
-
-static void
-parole_plugins_manager_save_rc (gchar *filename, gboolean active)
-{
-    gchar **saved_plugins;
-    gchar **plugins_rc;
-    guint num = 0, i;
-    
-    saved_plugins = parole_rc_read_entry_list ("plugins", PAROLE_RC_GROUP_PLUGINS);
-    
-    if ( saved_plugins )
-	num = g_strv_length (saved_plugins);
-    
-    if ( active )
-    {
-        plugins_rc = g_new0 (gchar *, num + 2);
-    
-	for ( i = 0; i < num; i++)
-	{
-	    plugins_rc[i] = g_strdup (saved_plugins[i]);
-	}
-    
-	plugins_rc[num] = g_strdup (filename);
-	plugins_rc[num + 1] = NULL;
-	parole_rc_write_entry_list ("plugins", PAROLE_RC_GROUP_PLUGINS, plugins_rc);
-    }
-    else
-    {
-	plugins_rc = g_new0 (gchar *, num + 1);
-	
-	for ( i = 0; i < num; i++)
-	{
-	    if ( g_strcmp0 (saved_plugins[i], filename) )
-		plugins_rc[i] = g_strdup (saved_plugins[i]);
-	    else
-		plugins_rc[i] = NULL;
-	}
-	plugins_rc[num] = NULL;
-	parole_rc_write_entry_list ("plugins", PAROLE_RC_GROUP_PLUGINS, plugins_rc);
-    }
-    g_strfreev (plugins_rc);
-    g_strfreev (saved_plugins);
-}
-
-void 
-parole_plugins_manager_cell_toggled_cb (GtkCellRendererToggle *cell_renderer, 
-					gchar *path_str, 
-					PrefData *pref)
-{
-    ParoleModule *module;
-    GtkTreeIter iter;
-    GtkTreePath *path;
-    gboolean active;
-
-    path = gtk_tree_path_new_from_string (path_str);
-    
-    gtk_tree_model_get_iter (GTK_TREE_MODEL (pref->store), &iter, path);
-    
-    gtk_tree_model_get (GTK_TREE_MODEL (pref->store), &iter, 
-		        COL_ACTIVE, &active, 
-			COL_DATA, &module,
-			-1);
-    
-    active ^= 1;
-    
-    if ( pref->manager->priv->load_plugins )
-	parole_module_set_active (module, active);
-    
-    gtk_list_store_set (GTK_LIST_STORE (pref->store), &iter, 
-			COL_ACTIVE, active,
-			-1);
-			
-    gtk_tree_path_free (path);
-    
-    parole_plugins_manager_save_rc (G_TYPE_MODULE (module)->name, active);
-}
-
-void parole_plugins_manager_tree_cursor_changed_cb (GtkTreeView *view,
-						    PrefData *pref)
-{
-    ParoleModule *module;
-    gboolean configurable = FALSE;
-#if GTK_CHECK_VERSION (2, 18, 0)
-    gchar *site_text;
-#endif
-
-    module = parole_plugins_manager_get_selected_module (pref);
-    
-    if ( !module )
-	return;
-    
-    gtk_label_set_markup (GTK_LABEL (pref->desc), module->desc->desc);
-    gtk_label_set_markup (GTK_LABEL (pref->author), module->desc->author);
-    
-#if GTK_CHECK_VERSION (2, 18, 0)
-    site_text = g_strdup_printf ("<a href=\"%s\">%s</a>", module->desc->site, _("Visit Website"));
-    gtk_label_set_markup (GTK_LABEL (pref->site), site_text);
-    g_free (site_text);
-
-#else
-    gtk_link_button_set_uri (GTK_LINK_BUTTON (pref->site), module->desc->site);
-#endif
-
-    gtk_widget_set_tooltip_text (pref->site, module->desc->site);
-
-    if ( module->enabled )
-    {
-	g_object_get (G_OBJECT (module->plugin),
-		      "configurable", &configurable,
-		      NULL);
-    }
-    
-    gtk_widget_set_sensitive (pref->configure, configurable);
-}
-
-static void
-parole_plugins_manager_unload_all (gpointer data, gpointer user_data)
-{
-    ParoleModule *module;
-    
-    module = PAROLE_MODULE (data);
-    
-    g_type_module_unuse (G_TYPE_MODULE (data));
-    g_object_unref (G_OBJECT (module));
-}
-
-#if !GTK_CHECK_VERSION (2, 18, 0)
-static void
-parole_plugins_manager_open_plugins_website (GtkLinkButton *bt, const gchar *link, gpointer data)
-{
-    gchar *cmd;
-    
-    cmd = g_strdup_printf ("%s %s","xdg-open", link);
-    
-    if ( !g_spawn_command_line_async (cmd, NULL) )
-    {
-        g_free (cmd);
-        cmd = g_strdup_printf ("%s %s","xfbrowser4", link);
-        g_spawn_command_line_async (cmd, NULL);
-    }
-    g_free (cmd);
-}
-#endif
-
-static void
-parole_plugins_manager_show_plugins_pref (GtkWidget *widget, ParolePluginsManager *manager)
-{
-    GtkBuilder *builder;
-    GtkWidget *site_box;
-    GtkTreeSelection *sel;
-    GtkTreePath *path;
-    GtkTreeIter iter;
-    guint i;
-    
-    PrefData *pref;
-    builder = parole_builder_new_from_string (plugins_ui, plugins_ui_length);
-    
-    pref = g_new0 (PrefData, 1);
-    
-    pref->window = GTK_WIDGET (gtk_builder_get_object (builder, "dialog"));
-    pref->view = GTK_WIDGET (gtk_builder_get_object (builder, "treeview"));
-    
-    pref->manager = manager;
-    pref->store = GTK_LIST_STORE (gtk_builder_get_object (builder, "liststore"));
-    
-    pref->desc = GTK_WIDGET (gtk_builder_get_object (builder, "description"));
-    pref->author = GTK_WIDGET (gtk_builder_get_object (builder, "author"));
-    site_box = GTK_WIDGET (gtk_builder_get_object (builder, "site-box"));
-    
-#if GTK_CHECK_VERSION (2, 18, 0)
-    pref->site = gtk_label_new (NULL);
-#else
-    pref->site = gtk_link_button_new_with_label (" ", _("Visit Website"));
-    gtk_link_button_set_uri_hook ((GtkLinkButtonUriFunc) parole_plugins_manager_open_plugins_website,
-				  NULL, NULL);
-#endif
-    
-    gtk_box_pack_start (GTK_BOX (site_box), pref->site, FALSE, FALSE, 0);
-    
-    pref->configure = GTK_WIDGET (gtk_builder_get_object (builder, "configure"));
-    
-    gtk_window_set_transient_for (GTK_WINDOW (pref->window), 
-			          GTK_WINDOW (gtk_widget_get_toplevel (manager->priv->main_nt)));
-
-    for ( i = 0; i < manager->priv->array->len; i++)
-    {
-	ParoleModule *module;
-	module = g_ptr_array_index (manager->priv->array, i);
-	
-	if ( module->desc )
-	{
-	    gtk_list_store_append (pref->store, &iter);
-	    gtk_list_store_set (pref->store, &iter, 
-			        COL_ACTIVE, module->enabled, 
-				COL_PLUGIN, module->desc->title, 
-				COL_DATA, module,
-				-1);
-	}
-    }
-    
-    gtk_builder_connect_signals (builder, pref);
-    g_object_unref (builder);
-    
-    sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (pref->view));
-
-    path = gtk_tree_path_new_from_string ("0");
-
-    gtk_tree_selection_select_path (sel, path);
-    gtk_tree_view_set_cursor (GTK_TREE_VIEW (pref->view), path, NULL, FALSE);
-    gtk_tree_path_free (path);
-    
-    gtk_widget_show_all (pref->window);
-}
-
-static void
-parole_plugins_manager_set_show_tabs (GtkNotebook *nt)
-{
-    gint npages;
-    npages = gtk_notebook_get_n_pages (nt);
-    gtk_notebook_set_show_tabs (nt, npages > 1);
-}
-
-static void
-parole_plugins_manager_page_added_cb (GtkContainer *container, GtkWidget *widget, gpointer data)
-{
-    parole_plugins_manager_set_show_tabs (GTK_NOTEBOOK (container));
-}
-
-static void
-parole_plugins_manager_page_removed_cb (GtkContainer *container, GtkWidget *widget, gpointer data)
-{
-    parole_plugins_manager_set_show_tabs (GTK_NOTEBOOK (container));
-}
-
-static void parole_plugins_manager_set_property (GObject *object,
-						 guint prop_id,
-						 const GValue *value,
-						 GParamSpec *pspec)
-{
-    ParolePluginsManager *manager;
-    
-    manager = PAROLE_PLUGINS_MANAGER (object);
-    
-    switch (prop_id)
-    {
-	case PROP_LOAD_PLUGIN:
-	    manager->priv->load_plugins = g_value_get_boolean (value);
-	    break;
-	default:
-           G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-           break;
-    }
-}
-
-static void parole_plugins_manager_get_property (GObject *object,
-						 guint prop_id,
-						 GValue *value,
-						 GParamSpec *pspec)
-{
-    ParolePluginsManager *manager;
-    
-    manager = PAROLE_PLUGINS_MANAGER (object);
-    
-    switch (prop_id)
-    {
-	case PROP_LOAD_PLUGIN:
-	    g_value_set_boolean (value, manager->priv->load_plugins);
-	    break;
-	default:
-           G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-           break;
-    }
-}
-
-static void
-parole_plugins_manager_class_init (ParolePluginsManagerClass *klass)
-{
-    GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
-    object_class->finalize = parole_plugins_manager_finalize;
-    
-    object_class->set_property = parole_plugins_manager_set_property;
-    object_class->get_property = parole_plugins_manager_get_property;
-    
-    
-    g_object_class_install_property (object_class,
-                                     PROP_LOAD_PLUGIN,
-                                     g_param_spec_boolean ("load-plugins",
-                                                           NULL, NULL,
-                                                           TRUE,
-                                                           G_PARAM_CONSTRUCT_ONLY|
-							   G_PARAM_READWRITE));
-
-    g_type_class_add_private (klass, sizeof (ParolePluginsManagerPrivate));
-}
-
-static void
-parole_plugins_manager_init (ParolePluginsManager *manager)
-{
-    GtkBuilder *builder;
-    
-    manager->priv = PAROLE_PLUGINS_MANAGER_GET_PRIVATE (manager);
-    
-    manager->priv->array = g_ptr_array_new ();
-    
-    builder = parole_builder_get_main_interface ();
-    
-    manager->priv->load_plugins = TRUE;
-    
-    manager->priv->list_nt = GTK_WIDGET (gtk_builder_get_object (builder, "notebook-playlist"));
-    manager->priv->main_nt = GTK_WIDGET (gtk_builder_get_object (builder, "main-notebook"));
-    
-    g_signal_connect (manager->priv->list_nt, "page-added",
-		      G_CALLBACK (parole_plugins_manager_page_added_cb), NULL);
-    
-    g_signal_connect (manager->priv->list_nt, "page-removed",
-		      G_CALLBACK (parole_plugins_manager_page_removed_cb), NULL);
-		      
-    g_signal_connect (manager->priv->main_nt, "page-added",
-		      G_CALLBACK (parole_plugins_manager_page_added_cb), NULL);
-    
-    g_signal_connect (manager->priv->main_nt, "page-removed",
-		      G_CALLBACK (parole_plugins_manager_page_removed_cb), NULL);
-		      
-    g_signal_connect (gtk_builder_get_object (builder, "plugins-menu-item"), "activate",
-		      G_CALLBACK (parole_plugins_manager_show_plugins_pref), manager);
-		     
-    parole_plugins_manager_set_show_tabs (GTK_NOTEBOOK (manager->priv->list_nt));
-    parole_plugins_manager_set_show_tabs (GTK_NOTEBOOK (manager->priv->main_nt));
-    
-    g_object_unref (builder);
-}
-
-static void
-parole_plugins_manager_finalize (GObject *object)
-{
-    ParolePluginsManager *manager;
-
-    manager = PAROLE_PLUGINS_MANAGER (object);
-    
-    g_ptr_array_foreach (manager->priv->array, 
-		        (GFunc)parole_plugins_manager_unload_all, NULL);
-    g_ptr_array_free (manager->priv->array, TRUE);
-
-    G_OBJECT_CLASS (parole_plugins_manager_parent_class)->finalize (object);
-}
-
-ParolePluginsManager *
-parole_plugins_manager_get (gboolean load_plugins)
-{
-    static gpointer parole_plugins_manager_object = NULL;
-    
-    if ( G_LIKELY (parole_plugins_manager_object != NULL) )
-    {
-	g_object_ref (parole_plugins_manager_object);
-    }
-    else
-    {
-	parole_plugins_manager_object = g_object_new (PAROLE_TYPE_PLUGINS_MANAGER, 
-						      "load-plugins", load_plugins, 
-						      NULL);
-	g_object_add_weak_pointer (parole_plugins_manager_object, &parole_plugins_manager_object);
-    }
-    
-    return PAROLE_PLUGINS_MANAGER (parole_plugins_manager_object);
-}
-
-void 
-parole_plugins_manager_load_plugins (ParolePluginsManager *manager)
-{
-    ParoleModule *module;
-    GDir *dir;
-    const gchar *name;
-    gchar *path;
-    GError *error = NULL;
-    gchar **plugins_rc;
-    guint len = 0, i = 0;
-    
-    plugins_rc = parole_rc_read_entry_list ("plugins", PAROLE_RC_GROUP_PLUGINS);
-    
-    if ( plugins_rc && plugins_rc[0] )
-	len = g_strv_length (plugins_rc);
-    
-    dir = g_dir_open (PAROLE_PLUGINS_DIR, 0, &error);
-    
-    if ( error )
-    {
-	g_critical ("Error opening plugins dir: %s", error->message);
-	g_error_free (error);
-	return;
-    }
-    
-    while ( (name = g_dir_read_name (dir) ))
-    {
-	if ( g_str_has_suffix (name, "." G_MODULE_SUFFIX) )
-	{
-	    path = g_build_filename (PAROLE_PLUGINS_DIR, name, NULL);
-	    TRACE ("loading module with path %s", path);
-	    
-	    module = parole_module_new (path);
-
-	    if ( g_type_module_use (G_TYPE_MODULE (module)) )
-	    {
-		g_ptr_array_add (manager->priv->array, module);
-		
-		for ( i = 0; i < len; i++)
-		{
-		    if ( !g_strcmp0 (plugins_rc[i], path) && manager->priv->load_plugins )
-		    {
-			parole_module_set_active (module, TRUE);
-			break;
-		    }
-		}
-	    }
-	    else
-		g_object_unref (module);
-	    g_free (path);
-	}
-    }
-    g_dir_close (dir);
-}
-
-void parole_plugins_manager_pack (ParolePluginsManager *manager, ParolePlugin *plugin,
-				  GtkWidget *widget, ParolePluginContainer container)
-{
-    gchar *title;
-    
-    g_object_get (G_OBJECT (plugin),
-		  "title", &title,
-		  NULL);
-    
-    if ( container == PAROLE_PLUGIN_CONTAINER_PLAYLIST )
-    {
-	gtk_notebook_append_page (GTK_NOTEBOOK (manager->priv->list_nt), widget, gtk_label_new (title));
-	gtk_widget_show_all (widget);
-    }
-    else if ( container == PAROLE_PLUGIN_CONTAINER_MAIN_VIEW )
-    {
-	gtk_notebook_append_page (GTK_NOTEBOOK (manager->priv->main_nt), widget, gtk_label_new (title));
-	gtk_widget_show_all (widget);
-    }
-    
-    if ( title )
-	g_free (title);
-	
-}
diff --git a/parole/parole-plugins-manager.h b/parole/parole-plugins-manager.h
deleted file mode 100644
index 130ba37..0000000
--- a/parole/parole-plugins-manager.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#ifndef __PAROLE_PLUGINS_MANAGER_H
-#define __PAROLE_PLUGINS_MANAGER_H
-
-#include <glib-object.h>
-#include "parole-plugin.h"
-
-G_BEGIN_DECLS
-
-#define PAROLE_TYPE_PLUGINS_MANAGER        (parole_plugins_manager_get_type () )
-#define PAROLE_PLUGINS_MANAGER(o)          (G_TYPE_CHECK_INSTANCE_CAST ((o), PAROLE_TYPE_PLUGINS_MANAGER, ParolePluginsManager))
-#define PAROLE_IS_PLUGINS_MANAGER(o)       (G_TYPE_CHECK_INSTANCE_TYPE ((o), PAROLE_TYPE_PLUGINS_MANAGER))
-
-typedef struct ParolePluginsManagerPrivate ParolePluginsManagerPrivate;
-
-typedef struct
-{
-    GObject         		     parent;
-    ParolePluginsManagerPrivate     *priv;
-    
-} ParolePluginsManager;
-
-typedef struct
-{
-    GObjectClass 		    parent_class;
-    
-} ParolePluginsManagerClass;
-
-GType        			    parole_plugins_manager_get_type       (void) G_GNUC_CONST;
-
-ParolePluginsManager               *parole_plugins_manager_get            (gboolean load_plugins);
-
-void				    parole_plugins_manager_load_plugins	  (ParolePluginsManager *manager);
-
-void				    parole_plugins_manager_pack		  (ParolePluginsManager *manager,
-									   ParolePlugin *plugin,
-									   GtkWidget *widget,
-									   ParolePluginContainer container);
-
-G_END_DECLS
-
-#endif /* __PAROLE_PLUGIN_MANAGER_H */
diff --git a/parole/parole-rc-utils.c b/parole/parole-rc-utils.c
deleted file mode 100644
index 6a98057..0000000
--- a/parole/parole-rc-utils.c
+++ /dev/null
@@ -1,204 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <glib.h>
-
-#include "parole-rc-utils.h"
-
-XfceRc *
-parole_get_resource_file (const gchar *group, gboolean readonly)
-{
-    gchar *file;
-    XfceRc *rc;
-    
-    file = xfce_resource_save_location (XFCE_RESOURCE_CONFIG, PAROLE_RESOURCE_FILE, TRUE);
-    rc = xfce_rc_simple_open (file, readonly);
-    
-    if (rc)
-	xfce_rc_set_group (rc, group);
-	
-    g_free (file);
-    
-    return rc;
-}
-
-void parole_rc_write_entry_bool (const gchar *property, const gchar *group, gboolean value)
-{
-    XfceRc *rc = parole_get_resource_file (group, FALSE);
-    
-    xfce_rc_write_bool_entry (rc, property, value);
-    xfce_rc_close (rc);
-}
-
-void parole_rc_write_entry_int (const gchar *property, const gchar *group, gint value)
-{
-    XfceRc *rc = parole_get_resource_file (group, FALSE);
-    
-    xfce_rc_write_int_entry (rc, property, value);
-    xfce_rc_close (rc);
-}
-
-void parole_rc_write_entry_string (const gchar *property, const gchar *group, const gchar *value)
-{
-    XfceRc *rc = parole_get_resource_file (group, FALSE);
-    
-    xfce_rc_write_entry (rc, property, value);
-    xfce_rc_close (rc);
-}
-
-void parole_rc_write_entry_list (const gchar *property, const gchar *group, gchar **value)
-{
-    XfceRc *rc = parole_get_resource_file (group, FALSE);
-    
-    xfce_rc_write_list_entry (rc, property, value, ";");
-    xfce_rc_close (rc);
-}
-
-gboolean parole_rc_read_entry_bool (const gchar *property, const gchar *group, gboolean fallback)
-{
-    XfceRc *rc = parole_get_resource_file (group, TRUE);
-    gboolean ret_val = fallback;
-    
-    if ( rc )
-    {
-	ret_val = xfce_rc_read_bool_entry (rc, property, fallback);
-	xfce_rc_close (rc);
-    }
-    
-    return ret_val;
-}
-
-gint parole_rc_read_entry_int (const gchar *property, const gchar *group, gint fallback)
-{
-    XfceRc *rc = parole_get_resource_file (group, TRUE);
-    gint ret_val = fallback;
-    
-    if ( rc )
-    {
-	ret_val =  xfce_rc_read_int_entry (rc, property, fallback);
-	xfce_rc_close (rc);
-    }
-    
-    return ret_val;
-}
-
-const gchar *parole_rc_read_entry_string (const gchar *property, const gchar *group, const gchar *fallback)
-{
-    const gchar *ret_val = fallback;
-    XfceRc *rc = parole_get_resource_file (group, TRUE);
-    
-    if ( rc )
-    {
-	ret_val = xfce_rc_read_entry (rc, property, fallback);
-	xfce_rc_close (rc);
-    }
-    
-    return ret_val;
-}
-
-gchar **parole_rc_read_entry_list (const gchar *property, const gchar *group)
-{
-    gchar **ret_val = NULL;
-    XfceRc *rc = parole_get_resource_file (group, TRUE);
-    
-    if ( rc )
-    {
-	ret_val = xfce_rc_read_list_entry (rc, property, ";");
-	xfce_rc_close (rc);
-    }
-    
-    return ret_val;
-}
-
-gchar **parole_get_history_full	(const gchar *relpath)
-{
-    gchar **lines = NULL;
-    gchar *history = NULL;
-    gchar *contents = NULL;
-    gsize length = 0;
-    
-    history = xfce_resource_lookup (XFCE_RESOURCE_CACHE, relpath);
-    
-    if (history && g_file_get_contents (history, &contents, &length, NULL)) 
-    {
-        lines = g_strsplit (contents, "\n", -1);
-        g_free (contents);
-    }
-    
-    g_free (history);
-    
-    return lines;
-}
-
-gchar **parole_get_history (void)
-{
-    return parole_get_history_full (PAROLE_HISTORY_FILE);
-}
-
-void parole_insert_line_history (const gchar *line)
-{
-    parole_insert_line_history_full (PAROLE_HISTORY_FILE, line);
-}
-
-void parole_insert_line_history_full (const gchar *relpath, const gchar *line)
-{
-    gchar *history = NULL;
-    
-    history = xfce_resource_save_location (XFCE_RESOURCE_CACHE, relpath, TRUE);
-    
-    if ( history ) 
-    {
-	FILE *f;
-	f = fopen (history, "a");
-	fprintf (f, "%s\n", line);
-	fclose (f);
-	g_free (history);
-    }
-    else
-	g_warning ("Unable to open cache file");
-}
-
-void parole_clear_history_file (void)
-{
-    parole_clear_history_file_full (PAROLE_HISTORY_FILE);
-}
-
-void parole_clear_history_file_full (const gchar *relpath)
-{
-    gchar *history = NULL;
-    
-    history = xfce_resource_save_location (XFCE_RESOURCE_CACHE, relpath, FALSE);
-    
-    if ( history )
-    {
-	FILE *f;
-	f = fopen (history, "w");
-	fclose (f);
-	g_free (history);
-    }
-}
diff --git a/parole/parole-rc-utils.h b/parole/parole-rc-utils.h
deleted file mode 100644
index 5576b07..0000000
--- a/parole/parole-rc-utils.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#ifndef __RC_UTILS_
-#define __RC_UTILS_
-
-#include <libxfce4util/libxfce4util.h>
-
-#define PAROLE_RESOURCE_FILE 		"xfce4/parole/parole-media-player.rc"
-#define PAROLE_HISTORY_FILE 		"xfce4/parole/history"
-
-#define PAROLE_RC_GROUP_GENERAL		"General"
-#define PAROLE_RC_GROUP_PLUGINS		"Plugins"
-
-XfceRc                 *parole_get_resource_file        (const gchar *group, 
-							 gboolean readonly);
-
-void			parole_rc_write_entry_bool	(const gchar *property,
-							 const gchar *group,
-							 gboolean value);
-
-void			parole_rc_write_entry_int	(const gchar *property,
-							 const gchar *group,
-							 gint value);
-							 
-void 			parole_rc_write_entry_string	(const gchar *property, 
-							 const gchar *group,
-							 const gchar *value);
-
-void 			parole_rc_write_entry_list	(const gchar *property, 
-							 const gchar *group,
-							 gchar **value);
-							 
-gboolean 		parole_rc_read_entry_bool	(const gchar *property,
-							 const gchar *group,
-							 gboolean fallback);
-
-gint			parole_rc_read_entry_int	(const gchar *property,
-							 const gchar *group,
-							 gint fallback);
-
-const gchar	       *parole_rc_read_entry_string	(const gchar *property,
-							 const gchar *group,
-							 const gchar *fallback);
-
-gchar	       	      **parole_rc_read_entry_list	(const gchar *property,
-							 const gchar *group);
-
-gchar                 **parole_get_history	        (void);
-
-gchar                 **parole_get_history_full	        (const gchar *relpath);
-
-void			parole_insert_line_history	(const gchar *line);		
-
-void			parole_insert_line_history_full	(const gchar *relpath,
-							 const gchar *line);		
-
-void 			parole_clear_history_file	(void);
-
-void 			parole_clear_history_file_full  (const gchar *relpath);
-
-#endif /* __RC_UTILS_ */
diff --git a/parole/parole-screensaver.c b/parole/parole-screensaver.c
deleted file mode 100644
index f927238..0000000
--- a/parole/parole-screensaver.c
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <X11/Xlib.h>
-
-#include <gdk/gdkx.h>
-
-#include "parole-screensaver.h"
-
-#define RESET_SCREENSAVER_TIMEOUT	6
-
-#define PAROLE_SCREEN_SAVER_GET_PRIVATE(o) \
-(G_TYPE_INSTANCE_GET_PRIVATE ((o), PAROLE_TYPE_SCREENSAVER, ParoleScreenSaverPrivate))
-
-struct ParoleScreenSaverPrivate
-{
-    gulong reset_id;
-};
-
-G_DEFINE_TYPE (ParoleScreenSaver, parole_screen_saver, G_TYPE_OBJECT)
-
-
-static void
-parole_screen_saver_finalize (GObject *object)
-{
-    ParoleScreenSaver *saver;
-
-    saver = PAROLE_SCREEN_SAVER (object);
-
-    G_OBJECT_CLASS (parole_screen_saver_parent_class)->finalize (object);
-}
-
-static void
-parole_screen_saver_class_init (ParoleScreenSaverClass *klass)
-{
-    GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
-    object_class->finalize = parole_screen_saver_finalize;
-
-    g_type_class_add_private (klass, sizeof (ParoleScreenSaverPrivate));
-}
-
-static void
-parole_screen_saver_init (ParoleScreenSaver *saver)
-{
-    saver->priv = PAROLE_SCREEN_SAVER_GET_PRIVATE (saver);
-    
-    saver->priv->reset_id = 0;
-}
-
-static gboolean
-parole_screen_saver_reset_timeout (gpointer data)
-{
-    XResetScreenSaver (GDK_DISPLAY ());
-    return TRUE;
-}
-
-ParoleScreenSaver *
-parole_screen_saver_new (void)
-{
-    ParoleScreenSaver *saver = NULL;
-    saver = g_object_new (PAROLE_TYPE_SCREENSAVER, NULL);
-    return saver;
-}
-
-void parole_screen_saver_inhibit (ParoleScreenSaver *saver)
-{
-    parole_screen_saver_uninhibit (saver);
-	
-    saver->priv->reset_id = g_timeout_add_seconds (RESET_SCREENSAVER_TIMEOUT, 
-						   (GSourceFunc) parole_screen_saver_reset_timeout,
-						   NULL);
-}
-
-void parole_screen_saver_uninhibit (ParoleScreenSaver *saver)
-{
-    if ( saver->priv->reset_id != 0 )
-    {
-	g_source_remove (saver->priv->reset_id);
-	saver->priv->reset_id = 0;
-    }
-}
diff --git a/parole/parole-screensaver.h b/parole/parole-screensaver.h
deleted file mode 100644
index a6fe889..0000000
--- a/parole/parole-screensaver.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#ifndef __PAROLE_SCREEN_SAVER_H
-#define __PAROLE_SCREEN_SAVER_H
-
-#include <glib-object.h>
-
-G_BEGIN_DECLS
-
-#define PAROLE_TYPE_SCREENSAVER        (parole_screen_saver_get_type () )
-#define PAROLE_SCREEN_SAVER(o)         (G_TYPE_CHECK_INSTANCE_CAST ((o), PAROLE_TYPE_SCREENSAVER, ParoleScreenSaver))
-#define PAROLE_IS_SCREENSAVER(o)       (G_TYPE_CHECK_INSTANCE_TYPE ((o), PAROLE_TYPE_SCREENSAVER))
-
-typedef struct ParoleScreenSaverPrivate ParoleScreenSaverPrivate;
-
-typedef struct
-{
-    GObject         		  parent;
-    ParoleScreenSaverPrivate     *priv;
-    
-} ParoleScreenSaver;
-
-typedef struct
-{
-    GObjectClass 		  parent_class;
-    
-} ParoleScreenSaverClass;
-
-GType        			  parole_screen_saver_get_type        (void) G_GNUC_CONST;
-ParoleScreenSaver       	 *parole_screen_saver_new             (void);
-
-void				  parole_screen_saver_inhibit	      (ParoleScreenSaver *saver);
-
-void				  parole_screen_saver_uninhibit	      (ParoleScreenSaver *saver);
-
-G_END_DECLS
-
-#endif /* __PAROLE_SCREEN_SAVER_H */
diff --git a/parole/parole-session.c b/parole/parole-session.c
deleted file mode 100644
index 3c973ee..0000000
--- a/parole/parole-session.c
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <libxfce4util/libxfce4util.h>
-#include <libxfcegui4/libxfcegui4.h>
-
-#include "parole-session.h"
-
-static void parole_session_finalize   (GObject *object);
-
-#define PAROLE_SESSION_GET_PRIVATE(o) \
-(G_TYPE_INSTANCE_GET_PRIVATE ((o), PAROLE_TYPE_SESSION, ParoleSessionPrivate))
-
-struct ParoleSessionPrivate
-{
-    SessionClient *client;
-    gboolean	   managed;
-};
-
-enum
-{
-    DIE,
-    SAVE_STATE,
-    LAST_SIGNAL
-};
-
-static guint signals [LAST_SIGNAL] = { 0 };
-
-G_DEFINE_TYPE (ParoleSession, parole_session, G_TYPE_OBJECT)
-
-static void
-parole_session_die (gpointer client_data)
-{
-    ParoleSession *session;
-    
-    session = parole_session_get ();
-    
-    if ( session->priv->managed )
-	g_signal_emit (G_OBJECT (session), signals [DIE], 0);
-}
-
-static void
-parole_session_class_init (ParoleSessionClass *klass)
-{
-    GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
-    signals [DIE] = 
-        g_signal_new ("die",
-                      PAROLE_TYPE_SESSION,
-                      G_SIGNAL_RUN_LAST,
-                      G_STRUCT_OFFSET(ParoleSessionClass, die),
-                      NULL, NULL,
-                      g_cclosure_marshal_VOID__VOID,
-                      G_TYPE_NONE, 0, G_TYPE_NONE);
-		      
-
-    signals [SAVE_STATE] = 
-        g_signal_new ("save-state",
-                      PAROLE_TYPE_SESSION,
-                      G_SIGNAL_RUN_LAST,
-                      G_STRUCT_OFFSET(ParoleSessionClass, save_state),
-                      NULL, NULL,
-                      g_cclosure_marshal_VOID__VOID,
-                      G_TYPE_NONE, 0, G_TYPE_NONE);
-
-    object_class->finalize = parole_session_finalize;
-
-    g_type_class_add_private (klass, sizeof (ParoleSessionPrivate));
-}
-
-static void
-parole_session_init (ParoleSession *session)
-{
-    session->priv = PAROLE_SESSION_GET_PRIVATE (session);
-    
-    session->priv->client = NULL;
-    
-    session->priv->client = client_session_new_full (NULL,
-						     SESSION_RESTART_NEVER,
-						     40,
-						     NULL,
-						     (gchar *) PACKAGE_NAME,
-						     NULL,
-						     NULL,
-						     NULL,
-						     NULL,
-						     NULL,
-						     NULL);
-						     
-    if ( G_UNLIKELY (session->priv->client == NULL ) )
-    {
-	g_warning ("Failed to connect to session manager");
-	return;
-    }
-    
-    session->priv->client->die     = parole_session_die;
-}
-
-static void
-parole_session_finalize (GObject *object)
-{
-    ParoleSession *session;
-
-    session = PAROLE_SESSION (object);
-    
-    if ( session->priv->client != NULL )
-    {
-	client_session_free (session->priv->client);
-    }
-
-    G_OBJECT_CLASS (parole_session_parent_class)->finalize (object);
-}
-
-ParoleSession *
-parole_session_get (void)
-{
-    static gpointer parole_session_obj = NULL;
-    
-    if ( G_LIKELY (parole_session_obj != NULL ) )
-    {
-	g_object_ref (parole_session_obj);
-    }
-    else
-    {
-	parole_session_obj = g_object_new (PAROLE_TYPE_SESSION, NULL);
-	g_object_add_weak_pointer (parole_session_obj, &parole_session_obj);
-    }
-    
-    return PAROLE_SESSION (parole_session_obj);
-}
-
-void parole_session_real_init       (ParoleSession *session)
-{
-    g_return_if_fail (PAROLE_IS_SESSION (session));
-    g_return_if_fail (session->priv->managed == FALSE);
-    
-    session->priv->managed = session_init (session->priv->client);
-}
-
-void parole_session_set_client_id (ParoleSession *session, const gchar *client_id)
-{
-    g_return_if_fail (PAROLE_IS_SESSION (session));
-    g_return_if_fail (session->priv->managed == FALSE);
-    
-    if ( G_UNLIKELY (session->priv->client == NULL) )
-	return;
-    
-    client_session_set_client_id (session->priv->client, client_id);
-}
diff --git a/parole/parole-session.h b/parole/parole-session.h
deleted file mode 100644
index b35593c..0000000
--- a/parole/parole-session.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#ifndef __PAROLE_SESSION_H
-#define __PAROLE_SESSION_H
-
-#include <glib-object.h>
-
-G_BEGIN_DECLS
-
-#define PAROLE_TYPE_SESSION        (parole_session_get_type () )
-#define PAROLE_SESSION(o)          (G_TYPE_CHECK_INSTANCE_CAST ((o), PAROLE_TYPE_SESSION, ParoleSession))
-#define PAROLE_IS_SESSION(o)       (G_TYPE_CHECK_INSTANCE_TYPE ((o), PAROLE_TYPE_SESSION))
-
-typedef struct ParoleSessionPrivate ParoleSessionPrivate;
-
-typedef struct
-{
-    GObject         		parent;
-    ParoleSessionPrivate       *priv;
-    
-} ParoleSession;
-
-typedef struct
-{
-    GObjectClass 		parent_class;
-    
-    void			(*die)			       (ParoleSession *session);
-    
-    void			(*save_state)		       (ParoleSession *session);
-    
-} ParoleSessionClass;
-
-GType        			parole_session_get_type        (void) G_GNUC_CONST;
-
-ParoleSession       	       *parole_session_get             (void);
-
-void				parole_session_real_init       (ParoleSession *session);
-
-void 				parole_session_set_client_id   (ParoleSession *session, 
-								const gchar *client_id);
-G_END_DECLS
-
-#endif /* __PAROLE_SESSION_H */
diff --git a/parole/parole-statusbar.c b/parole/parole-statusbar.c
deleted file mode 100644
index 9563b09..0000000
--- a/parole/parole-statusbar.c
+++ /dev/null
@@ -1,321 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <gtk/gtk.h>
-
-#include <libxfcegui4/libxfcegui4.h>
-
-#include "parole-builder.h"
-#include "parole-statusbar.h"
-#include "parole-plugin.h"
-
-#define PAROLE_STATUSBAR_GET_PRIVATE(o) \
-(G_TYPE_INSTANCE_GET_PRIVATE ((o), PAROLE_TYPE_STATUSBAR, ParoleStatusbarPrivate))
-
-struct ParoleStatusbarPrivate
-{
-    ParolePlugin *plugin;
-    GtkWidget    *box;
-    GtkWidget    *progress;
-    GtkWidget    *label_text;
-    GtkWidget    *label_duration;
-    GtkWidget    *sep;
-    
-    gdouble       duration;
-    gdouble       pos;
-};
-
-G_DEFINE_TYPE (ParoleStatusbar, parole_statusbar, G_TYPE_OBJECT)
-
-static void 
-parole_statusbar_set_buffering (ParoleStatusbar *bar, gint percentage)
-{
-    gchar *buff;
-    
-    buff = g_strdup_printf ("%s %d%%", _("Buffering"), percentage);
-    
-    gtk_progress_bar_set_text (GTK_PROGRESS_BAR (bar->priv->progress), buff);
-    gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (bar->priv->progress), (gdouble) percentage/100);
-    gtk_widget_hide (bar->priv->label_text);
-    gtk_widget_hide (bar->priv->label_duration);
-    gtk_widget_show (bar->priv->progress);
-    g_free (buff);
-}
-
-static void 
-parole_statusbar_set_duration (ParoleStatusbar *bar, ParoleState state, gdouble position)
-{
-    gchar *text = NULL;
-
-    if ( state == PAROLE_STATE_STOPPED )
-    {
-	gtk_label_set_text (GTK_LABEL (bar->priv->label_duration), _("Stopped"));
-    }
-    else if ( state == PAROLE_STATE_PLAYBACK_FINISHED )
-    {
-	gtk_label_set_text (GTK_LABEL (bar->priv->label_duration), _("Finished"));
-    }
-    else
-    {
-	if ( bar->priv->duration != 0)
-	{
-	    text = g_strdup_printf ("%s %4.2f/%4.2f", 
-				    state == PAROLE_STATE_PAUSED ? _("Paused") : _("Playing"), position, bar->priv->duration);
-	}
-	if ( text )
-	{
-	    gtk_label_set_text (GTK_LABEL (bar->priv->label_duration), text);
-	    g_free (text);
-	}
-	else
-	    gtk_label_set_text (GTK_LABEL (bar->priv->label_duration), state == PAROLE_STATE_PAUSED ? _("Paused") : ("Playing"));
-    }
-}
-
-static void parole_statusbar_set_text (ParoleStatusbar *bar, const ParoleStream *stream, ParoleState state)
-{
-    gchar *text = NULL;
-    gchar *title = NULL;
-    gchar *uri = NULL;
-    gboolean live;
-    
-    if ( state >= PAROLE_STATE_PAUSED )
-    {
-	g_object_get (G_OBJECT (stream),
-		      "title", &title,
-		      "live", &live,
-		      "uri", &uri,
-		      NULL);
-		      
-	if ( live )
-	{
-	    text = g_strdup_printf ("%s '%s'", _("Live stream:"), uri);
-	    gtk_label_set_text (GTK_LABEL (bar->priv->label_text), text);
-	    g_free (text);
-	    g_free (uri);
-	    if ( title )
-		g_free (title);
-	    return;
-	}
-	
-	if ( !title )
-	{
-	    gchar *filename;
-	    if ( G_UNLIKELY (uri == NULL) )
-		goto out;
-	    
-	    filename = g_filename_from_uri (uri, NULL, NULL);
-	    
-	    if ( filename )
-	    {
-		title  = g_path_get_basename (filename);
-		g_free (filename);
-	    }
-	    else
-	    {
-		TRACE ("Unable to set statusbar title");
-		goto out;
-	    }
-	}
-	
-	text = g_strdup_printf ("%s", title);
-	gtk_label_set_text (GTK_LABEL (bar->priv->label_text), text);
-	g_free (text);
-	g_free (uri);
-	return;
-    }
-	
-out:
-    gtk_label_set_text (GTK_LABEL (bar->priv->label_text), NULL);
-}
-
-static void
-parole_statusbar_state_changed_cb (ParolePlugin *gst, const ParoleStream *stream, 
-				   ParoleState state, ParoleStatusbar *statusbar)
-{
-    if ( state >= PAROLE_STATE_PAUSED )
-    {
-	g_object_get (G_OBJECT (stream),
-		      "duration", &statusbar->priv->duration,
-		      NULL);
-    }
-    else 
-    {
-	statusbar->priv->duration = 0;
-	statusbar->priv->pos = 0;
-    }
-	
-    if ( state < PAROLE_STATE_PAUSED ) 
-	gtk_widget_hide (statusbar->priv->progress);
-	
-    parole_statusbar_set_text (statusbar, stream, state);
-    parole_statusbar_set_duration (statusbar, state, statusbar->priv->pos);
-}
-
-static void
-parole_statusbar_tag_message_cb (ParolePlugin *gst, const ParoleStream *stream, ParoleStatusbar *statusbar)
-{
-    ParoleState state;
-    
-    state = parole_plugin_get_state (statusbar->priv->plugin);
-    
-    parole_statusbar_set_text (statusbar, stream, state);
-}
-
-static void
-parole_statusbar_progressed_cb (ParolePlugin *gst, const ParoleStream *stream, 
-		 	        gdouble value, ParoleStatusbar *statusbar)
-{
-    ParoleState state;
-    
-    state = parole_plugin_get_state (statusbar->priv->plugin);
-    statusbar->priv->pos = value;
-    
-    parole_statusbar_set_duration (statusbar, state, value);
-}
-
-static void
-parole_statusbar_buffering_cb (ParolePlugin *gst, const ParoleStream *stream, gint percentage, ParoleStatusbar *statusbar)
-{
-    parole_statusbar_set_buffering (statusbar, percentage);
-    
-    if ( percentage == 100 )
-    {
-	gtk_widget_show (statusbar->priv->label_text);
-	gtk_widget_show (statusbar->priv->label_duration);
-	gtk_widget_hide (statusbar->priv->progress);
-    }
-}
-
-static void
-parole_statusbar_finalize (GObject *object)
-{
-    ParoleStatusbar *statusbar;
-
-    statusbar = PAROLE_STATUSBAR (object);
-    
-    g_object_unref (statusbar->priv->plugin);
-
-    G_OBJECT_CLASS (parole_statusbar_parent_class)->finalize (object);
-}
-
-static void
-parole_statusbar_class_init (ParoleStatusbarClass *klass)
-{
-    GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
-    object_class->finalize = parole_statusbar_finalize;
-
-    g_type_class_add_private (klass, sizeof (ParoleStatusbarPrivate));
-}
-
-static void
-parole_statusbar_init (ParoleStatusbar *statusbar)
-{
-    GtkWidget *box;
-    GtkWidget *sp;
-    GtkBuilder *builder;
-    
-    statusbar->priv = PAROLE_STATUSBAR_GET_PRIVATE (statusbar);
-    statusbar->priv->plugin = parole_plugin_new (NULL, NULL, NULL, NULL);
-    
-    statusbar->priv->duration = 0;
-    statusbar->priv->pos = 0;
-    
-    builder = parole_builder_get_main_interface ();
-    
-    box = GTK_WIDGET (gtk_builder_get_object (builder, "statusbox"));
-    
-    statusbar->priv->sep = GTK_WIDGET (gtk_builder_get_object (builder, "status-sep"));
-    
-    statusbar->priv->progress = gtk_progress_bar_new ();
-    gtk_widget_hide (statusbar->priv->progress);
-    statusbar->priv->label_text = gtk_label_new (NULL);
-
-    gtk_misc_set_alignment (GTK_MISC (statusbar->priv->label_text), 0.0, 0.5);
-    
-    g_object_set (G_OBJECT (statusbar->priv->label_text), 
-		  "ellipsize", PANGO_ELLIPSIZE_END, 
-		  NULL);
-
-    gtk_widget_set_size_request (statusbar->priv->progress, 180, 20);
-
-    statusbar->priv->label_duration = gtk_label_new (NULL);
-    
-    sp = gtk_vseparator_new ();
-    gtk_widget_show (sp);
-    
-    gtk_box_pack_start (GTK_BOX (box), statusbar->priv->label_duration, FALSE, FALSE, 0);
-    gtk_box_pack_start (GTK_BOX (box), sp, FALSE, FALSE, 0);
-    gtk_box_pack_start (GTK_BOX (box), statusbar->priv->label_text, TRUE, TRUE, 0);
-    gtk_box_pack_start (GTK_BOX (box), statusbar->priv->progress, FALSE, FALSE, 0);
-
-    gtk_widget_show (box);
-    gtk_widget_show (statusbar->priv->label_text);
-    gtk_widget_show (statusbar->priv->label_duration);
-    g_object_unref (builder);
-    statusbar->priv->box = box;
-    
-    /*
-     * Gst signals
-     */
-    g_signal_connect (G_OBJECT (statusbar->priv->plugin), "state-changed",
-		      G_CALLBACK (parole_statusbar_state_changed_cb), statusbar);
-	
-    g_signal_connect (G_OBJECT (statusbar->priv->plugin), "progressed",
-		      G_CALLBACK (parole_statusbar_progressed_cb), statusbar);
-		      
-    g_signal_connect (G_OBJECT (statusbar->priv->plugin), "tag-message",
-		      G_CALLBACK (parole_statusbar_tag_message_cb), statusbar);
-    
-    g_signal_connect (G_OBJECT (statusbar->priv->plugin), "buffering",
-		      G_CALLBACK (parole_statusbar_buffering_cb), statusbar);
-    
-}
-
-ParoleStatusbar *
-parole_statusbar_new (void)
-{
-    ParoleStatusbar *statusbar = NULL;
-    statusbar = g_object_new (PAROLE_TYPE_STATUSBAR, NULL);
-    return statusbar;
-}
-
-void parole_statusbar_set_visible (ParoleStatusbar *bar, gboolean visible)
-{
-    if ( visible )
-    {
-	gtk_widget_show (bar->priv->sep);
-	gtk_widget_show (bar->priv->box);
-    }
-    else
-    {
-	gtk_widget_hide (bar->priv->sep);
-	gtk_widget_hide (bar->priv->box);
-    }
-}
diff --git a/parole/parole-statusbar.h b/parole/parole-statusbar.h
deleted file mode 100644
index 9efb18b..0000000
--- a/parole/parole-statusbar.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#ifndef __PAROLE_STATUSBAR_H
-#define __PAROLE_STATUSBAR_H
-
-#include <glib-object.h>
-
-G_BEGIN_DECLS
-
-#define PAROLE_TYPE_STATUSBAR        (parole_statusbar_get_type () )
-#define PAROLE_STATUSBAR(o)          (G_TYPE_CHECK_INSTANCE_CAST ((o), PAROLE_TYPE_STATUSBAR, ParoleStatusbar))
-#define PAROLE_IS_STATUSBAR(o)       (G_TYPE_CHECK_INSTANCE_TYPE ((o), PAROLE_TYPE_STATUSBAR))
-
-typedef struct ParoleStatusbarPrivate ParoleStatusbarPrivate;
-
-typedef struct
-{
-    GObject         		parent;
-    ParoleStatusbarPrivate     *priv;
-    
-} ParoleStatusbar;
-
-typedef struct
-{
-    GObjectClass 		parent_class;
-    
-} ParoleStatusbarClass;
-
-GType        			parole_statusbar_get_type        (void) G_GNUC_CONST;
-
-ParoleStatusbar       	       *parole_statusbar_new             (void);
-
-void				parole_statusbar_set_visible 	 (ParoleStatusbar *bar,
-								  gboolean visible);
-
-G_END_DECLS
-
-#endif /* __PAROLE_STATUSBAR_H */
diff --git a/parole/parole-subtitle-encoding.c b/parole/parole-subtitle-encoding.c
deleted file mode 100644
index 5a74896..0000000
--- a/parole/parole-subtitle-encoding.c
+++ /dev/null
@@ -1,544 +0,0 @@
-/* 
- * Copyright (C) 2001-2006 Bastien Nocera <hadess at hadess.net>
- *
- * encoding list copied from gnome-terminal/encoding.c
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
- *
- * The Totem project hereby grant permission for non-gpl compatible GStreamer
- * plugins to be used and distributed together with GStreamer and Totem. This
- * permission are above and beyond the permissions granted by the GPL license
- * Totem is covered by.
- *
- * Monday 7th February 2005: Christian Schaller: Add exception clause.
- * See license_change file for details.
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <glib.h>
-#include <libxfce4util/libxfce4util.h>
-
-#include "parole-subtitle-encoding.h"
-
-typedef enum
-{
-  SUBTITLE_ENCODING_CURRENT_LOCALE,
-
-  SUBTITLE_ENCODING_ISO_8859_6,
-  SUBTITLE_ENCODING_IBM_864,
-  SUBTITLE_ENCODING_MAC_ARABIC,
-  SUBTITLE_ENCODING_WINDOWS_1256,
-
-  SUBTITLE_ENCODING_ARMSCII_8,
-
-  SUBTITLE_ENCODING_ISO_8859_4,
-  SUBTITLE_ENCODING_ISO_8859_13,
-  SUBTITLE_ENCODING_WINDOWS_1257,
-
-  SUBTITLE_ENCODING_ISO_8859_14,
-
-  SUBTITLE_ENCODING_ISO_8859_2,
-  SUBTITLE_ENCODING_IBM_852,
-  SUBTITLE_ENCODING_MAC_CE,
-  SUBTITLE_ENCODING_WINDOWS_1250,
-
-  SUBTITLE_ENCODING_GB18030,
-  SUBTITLE_ENCODING_GB2312,
-  SUBTITLE_ENCODING_GBK,
-  SUBTITLE_ENCODING_HZ,
-
-  SUBTITLE_ENCODING_BIG5,
-  SUBTITLE_ENCODING_BIG5_HKSCS,
-  SUBTITLE_ENCODING_EUC_TW,
-
-  SUBTITLE_ENCODING_MAC_CROATIAN,
-
-  SUBTITLE_ENCODING_ISO_8859_5,
-  SUBTITLE_ENCODING_IBM_855,
-  SUBTITLE_ENCODING_ISO_IR_111,
-  SUBTITLE_ENCODING_KOI8_R,
-  SUBTITLE_ENCODING_MAC_CYRILLIC,
-  SUBTITLE_ENCODING_WINDOWS_1251,
-
-  SUBTITLE_ENCODING_CP_866,
-
-  SUBTITLE_ENCODING_MAC_UKRAINIAN,
-  SUBTITLE_ENCODING_KOI8_U,
-
-  SUBTITLE_ENCODING_GEOSTD8,
-
-  SUBTITLE_ENCODING_ISO_8859_7,
-  SUBTITLE_ENCODING_MAC_GREEK,
-  SUBTITLE_ENCODING_WINDOWS_1253,
-
-  SUBTITLE_ENCODING_MAC_GUJARATI,
-
-  SUBTITLE_ENCODING_MAC_GURMUKHI,
-
-  SUBTITLE_ENCODING_ISO_8859_8_I,
-  SUBTITLE_ENCODING_IBM_862,
-  SUBTITLE_ENCODING_MAC_HEBREW,
-  SUBTITLE_ENCODING_WINDOWS_1255,
-
-  SUBTITLE_ENCODING_ISO_8859_8,
-
-  SUBTITLE_ENCODING_MAC_DEVANAGARI,
-
-  SUBTITLE_ENCODING_MAC_ICELANDIC,
-
-  SUBTITLE_ENCODING_EUC_JP,
-  SUBTITLE_ENCODING_ISO_2022_JP,
-  SUBTITLE_ENCODING_SHIFT_JIS,
-
-  SUBTITLE_ENCODING_EUC_KR,
-  SUBTITLE_ENCODING_ISO_2022_KR,
-  SUBTITLE_ENCODING_JOHAB,
-  SUBTITLE_ENCODING_UHC,
-
-  SUBTITLE_ENCODING_ISO_8859_10,
-
-  SUBTITLE_ENCODING_MAC_FARSI,
-
-  SUBTITLE_ENCODING_ISO_8859_16,
-  SUBTITLE_ENCODING_MAC_ROMANIAN,
-
-  SUBTITLE_ENCODING_ISO_8859_3,
-
-  SUBTITLE_ENCODING_TIS_620,
-
-  SUBTITLE_ENCODING_ISO_8859_9,
-  SUBTITLE_ENCODING_IBM_857,
-  SUBTITLE_ENCODING_MAC_TURKISH,
-  SUBTITLE_ENCODING_WINDOWS_1254,
-
-  SUBTITLE_ENCODING_UTF_7,
-  SUBTITLE_ENCODING_UTF_8,
-  SUBTITLE_ENCODING_UTF_16,
-  SUBTITLE_ENCODING_UCS_2,
-  SUBTITLE_ENCODING_UCS_4,
-
-  SUBTITLE_ENCODING_ISO_8859_1,
-  SUBTITLE_ENCODING_ISO_8859_15,
-  SUBTITLE_ENCODING_IBM_850,
-  SUBTITLE_ENCODING_MAC_ROMAN,
-  SUBTITLE_ENCODING_WINDOWS_1252,
-
-  SUBTITLE_ENCODING_TCVN,
-  SUBTITLE_ENCODING_VISCII,
-  SUBTITLE_ENCODING_WINDOWS_1258,
-
-  SUBTITLE_ENCODING_LAST
-} SubtitleEncodingIndex;
-
-
-typedef struct
-{
-  int index;
-  const char *charset;
-  char *name;
-} SubtitleEncoding;
-
-
-static SubtitleEncoding encodings[] = {
-
-  {SUBTITLE_ENCODING_CURRENT_LOCALE,
-      NULL, N_("Current Locale")},
-
-  {SUBTITLE_ENCODING_ISO_8859_6,
-      "ISO-8859-6", N_("Arabic")},
-  {SUBTITLE_ENCODING_IBM_864,
-      "IBM864", N_("Arabic")},
-  {SUBTITLE_ENCODING_MAC_ARABIC,
-      "MAC_ARABIC", N_("Arabic")},
-  {SUBTITLE_ENCODING_WINDOWS_1256,
-      "WINDOWS-1256", N_("Arabic")},
-
-  {SUBTITLE_ENCODING_ARMSCII_8,
-      "ARMSCII-8", N_("Armenian")},
-
-  {SUBTITLE_ENCODING_ISO_8859_4,
-      "ISO-8859-4", N_("Baltic")},
-  {SUBTITLE_ENCODING_ISO_8859_13,
-      "ISO-8859-13", N_("Baltic")},
-  {SUBTITLE_ENCODING_WINDOWS_1257,
-      "WINDOWS-1257", N_("Baltic")},
-
-  {SUBTITLE_ENCODING_ISO_8859_14,
-      "ISO-8859-14", N_("Celtic")},
-
-  {SUBTITLE_ENCODING_ISO_8859_2,
-      "ISO-8859-2", N_("Central European")},
-  {SUBTITLE_ENCODING_IBM_852,
-      "IBM852", N_("Central European")},
-  {SUBTITLE_ENCODING_MAC_CE,
-      "MAC_CE", N_("Central European")},
-  {SUBTITLE_ENCODING_WINDOWS_1250,
-      "WINDOWS-1250", N_("Central European")},
-
-  {SUBTITLE_ENCODING_GB18030,
-      "GB18030", N_("Chinese Simplified")},
-  {SUBTITLE_ENCODING_GB2312,
-      "GB2312", N_("Chinese Simplified")},
-  {SUBTITLE_ENCODING_GBK,
-      "GBK", N_("Chinese Simplified")},
-  {SUBTITLE_ENCODING_HZ,
-      "HZ", N_("Chinese Simplified")},
-
-  {SUBTITLE_ENCODING_BIG5,
-      "BIG5", N_("Chinese Traditional")},
-  {SUBTITLE_ENCODING_BIG5_HKSCS,
-      "BIG5-HKSCS", N_("Chinese Traditional")},
-  {SUBTITLE_ENCODING_EUC_TW,
-      "EUC-TW", N_("Chinese Traditional")},
-
-  {SUBTITLE_ENCODING_MAC_CROATIAN,
-      "MAC_CROATIAN", N_("Croatian")},
-
-  {SUBTITLE_ENCODING_ISO_8859_5,
-      "ISO-8859-5", N_("Cyrillic")},
-  {SUBTITLE_ENCODING_IBM_855,
-      "IBM855", N_("Cyrillic")},
-  {SUBTITLE_ENCODING_ISO_IR_111,
-      "ISO-IR-111", N_("Cyrillic")},
-  {SUBTITLE_ENCODING_KOI8_R,
-      "KOI8-R", N_("Cyrillic")},
-  {SUBTITLE_ENCODING_MAC_CYRILLIC,
-      "MAC-CYRILLIC", N_("Cyrillic")},
-  {SUBTITLE_ENCODING_WINDOWS_1251,
-      "WINDOWS-1251", N_("Cyrillic")},
-
-  {SUBTITLE_ENCODING_CP_866,
-      "CP866", N_("Cyrillic/Russian")},
-
-  {SUBTITLE_ENCODING_MAC_UKRAINIAN,
-      "MAC_UKRAINIAN", N_("Cyrillic/Ukrainian")},
-  {SUBTITLE_ENCODING_KOI8_U,
-      "KOI8-U", N_("Cyrillic/Ukrainian")},
-
-  {SUBTITLE_ENCODING_GEOSTD8,
-      "GEORGIAN-PS", N_("Georgian")},
-
-  {SUBTITLE_ENCODING_ISO_8859_7,
-      "ISO-8859-7", N_("Greek")},
-  {SUBTITLE_ENCODING_MAC_GREEK,
-      "MAC_GREEK", N_("Greek")},
-  {SUBTITLE_ENCODING_WINDOWS_1253,
-      "WINDOWS-1253", N_("Greek")},
-
-  {SUBTITLE_ENCODING_MAC_GUJARATI,
-      "MAC_GUJARATI", N_("Gujarati")},
-
-  {SUBTITLE_ENCODING_MAC_GURMUKHI,
-      "MAC_GURMUKHI", N_("Gurmukhi")},
-
-  {SUBTITLE_ENCODING_ISO_8859_8_I,
-      "ISO-8859-8-I", N_("Hebrew")},
-  {SUBTITLE_ENCODING_IBM_862,
-      "IBM862", N_("Hebrew")},
-  {SUBTITLE_ENCODING_MAC_HEBREW,
-      "MAC_HEBREW", N_("Hebrew")},
-  {SUBTITLE_ENCODING_WINDOWS_1255,
-      "WINDOWS-1255", N_("Hebrew")},
-
-  {SUBTITLE_ENCODING_ISO_8859_8,
-      "ISO-8859-8", N_("Hebrew Visual")},
-
-  {SUBTITLE_ENCODING_MAC_DEVANAGARI,
-      "MAC_DEVANAGARI", N_("Hindi")},
-
-  {SUBTITLE_ENCODING_MAC_ICELANDIC,
-      "MAC_ICELANDIC", N_("Icelandic")},
-
-  {SUBTITLE_ENCODING_EUC_JP,
-      "EUC-JP", N_("Japanese")},
-  {SUBTITLE_ENCODING_ISO_2022_JP,
-      "ISO2022JP", N_("Japanese")},
-  {SUBTITLE_ENCODING_SHIFT_JIS,
-      "SHIFT-JIS", N_("Japanese")},
-
-  {SUBTITLE_ENCODING_EUC_KR,
-      "EUC-KR", N_("Korean")},
-  {SUBTITLE_ENCODING_ISO_2022_KR,
-      "ISO2022KR", N_("Korean")},
-  {SUBTITLE_ENCODING_JOHAB,
-      "JOHAB", N_("Korean")},
-  {SUBTITLE_ENCODING_UHC,
-      "UHC", N_("Korean")},
-
-  {SUBTITLE_ENCODING_ISO_8859_10,
-      "ISO-8859-10", N_("Nordic")},
-
-  {SUBTITLE_ENCODING_MAC_FARSI,
-      "MAC_FARSI", N_("Persian")},
-
-  {SUBTITLE_ENCODING_ISO_8859_16,
-      "ISO-8859-16", N_("Romanian")},
-  {SUBTITLE_ENCODING_MAC_ROMANIAN,
-      "MAC_ROMANIAN", N_("Romanian")},
-
-  {SUBTITLE_ENCODING_ISO_8859_3,
-      "ISO-8859-3", N_("South European")},
-
-  {SUBTITLE_ENCODING_TIS_620,
-      "TIS-620", N_("Thai")},
-
-  {SUBTITLE_ENCODING_ISO_8859_9,
-      "ISO-8859-9", N_("Turkish")},
-  {SUBTITLE_ENCODING_IBM_857,
-      "IBM857", N_("Turkish")},
-  {SUBTITLE_ENCODING_MAC_TURKISH,
-      "MAC_TURKISH", N_("Turkish")},
-  {SUBTITLE_ENCODING_WINDOWS_1254,
-      "WINDOWS-1254", N_("Turkish")},
-
-  {SUBTITLE_ENCODING_UTF_7,
-      "UTF-7", N_("Unicode")},
-  {SUBTITLE_ENCODING_UTF_8,
-      "UTF-8", N_("Unicode")},
-  {SUBTITLE_ENCODING_UTF_16,
-      "UTF-16", N_("Unicode")},
-  {SUBTITLE_ENCODING_UCS_2,
-      "UCS-2", N_("Unicode")},
-  {SUBTITLE_ENCODING_UCS_4,
-      "UCS-4", N_("Unicode")},
-
-  {SUBTITLE_ENCODING_ISO_8859_1,
-      "ISO-8859-1", N_("Western")},
-  {SUBTITLE_ENCODING_ISO_8859_15,
-      "ISO-8859-15", N_("Western")},
-  {SUBTITLE_ENCODING_IBM_850,
-      "IBM850", N_("Western")},
-  {SUBTITLE_ENCODING_MAC_ROMAN,
-      "MAC_ROMAN", N_("Western")},
-  {SUBTITLE_ENCODING_WINDOWS_1252,
-      "WINDOWS-1252", N_("Western")},
-
-  {SUBTITLE_ENCODING_TCVN,
-      "TCVN", N_("Vietnamese")},
-  {SUBTITLE_ENCODING_VISCII,
-      "VISCII", N_("Vietnamese")},
-  {SUBTITLE_ENCODING_WINDOWS_1258,
-      "WINDOWS-1258", N_("Vietnamese")}
-};
-
-static const SubtitleEncoding *
-find_encoding_by_charset (const char *charset)
-{
-  int i;
-
-  i = 1;                        /* skip current locale */
-  while (i < SUBTITLE_ENCODING_LAST) {
-    if (strcasecmp (charset, encodings[i].charset) == 0)
-      return &encodings[i];
-
-    ++i;
-  }
-
-  if (strcasecmp (charset,
-          encodings[SUBTITLE_ENCODING_CURRENT_LOCALE].charset) == 0)
-    return &encodings[SUBTITLE_ENCODING_CURRENT_LOCALE];
-
-  return NULL;
-}
-
-static void
-subtitle_encoding_init (void)
-{
-  guint i;
-
-  g_get_charset ((const char **)
-      &encodings[SUBTITLE_ENCODING_CURRENT_LOCALE].charset);
-
-  g_assert (G_N_ELEMENTS (encodings) == SUBTITLE_ENCODING_LAST);
-
-  for (i = 0; i < SUBTITLE_ENCODING_LAST; i++) {
-    /* Translate the names */
-    encodings[i].name = _(encodings[i].name);
-  }
-}
-
-static int
-subtitle_encoding_get_index (const char *charset)
-{
-  const SubtitleEncoding *e;
-
-  e = find_encoding_by_charset (charset);
-  if (e != NULL)
-    return e->index;
-  else
-    return SUBTITLE_ENCODING_CURRENT_LOCALE;
-}
-
-static const char *
-subtitle_encoding_get_charset (int index_i)
-{
-  const SubtitleEncoding *e;
-
-  if (index_i >= SUBTITLE_ENCODING_LAST)
-    e = &encodings[SUBTITLE_ENCODING_CURRENT_LOCALE];
-  else if (index_i < SUBTITLE_ENCODING_CURRENT_LOCALE)
-    e = &encodings[SUBTITLE_ENCODING_CURRENT_LOCALE];
-  else
-    e = &encodings[index_i];
-  return e->charset;
-}
-
-enum
-{
-  INDEX_COL,
-  NAME_COL
-};
-
-static gint
-compare (GtkTreeModel * model, GtkTreeIter * a, GtkTreeIter * b, gpointer data)
-{
-  gchar *str_a, *str_b;
-  gint result;
-
-  gtk_tree_model_get (model, a, NAME_COL, &str_a, -1);
-  gtk_tree_model_get (model, b, NAME_COL, &str_b, -1);
-
-  result = strcmp (str_a, str_b);
-
-  g_free (str_a);
-  g_free (str_b);
-
-  return result;
-}
-
-static void
-is_encoding_sensitive (GtkCellLayout * cell_layout,
-    GtkCellRenderer * cell,
-    GtkTreeModel * tree_model, GtkTreeIter * iter, gpointer data)
-{
-
-  gboolean sensitive;
-
-  sensitive = !gtk_tree_model_iter_has_child (tree_model, iter);
-  g_object_set (cell, "sensitive", sensitive, NULL);
-}
-
-static GtkTreeModel *
-subtitle_encoding_create_store (void)
-{
-  gchar *label;
-  gchar *lastlang = "";
-  GtkTreeIter iter, iter2;
-  GtkTreeStore *store;
-  int i;
-
-  store = gtk_tree_store_new (2, G_TYPE_INT, G_TYPE_STRING);
-
-  for (i = 0; i < SUBTITLE_ENCODING_LAST; i++) {
-    if (strcmp (lastlang, encodings[i].name)) {
-      lastlang = encodings[i].name;
-      gtk_tree_store_append (store, &iter, NULL);
-      gtk_tree_store_set (store, &iter, INDEX_COL,
-          -1, NAME_COL, lastlang, -1);
-    }
-    label = g_strdup_printf("%s (%s)", lastlang, encodings[i].charset);
-    gtk_tree_store_append (store, &iter2, &iter);
-    gtk_tree_store_set (store, &iter2, INDEX_COL,
-        encodings[i].index, NAME_COL, label, -1);
-    g_free(label);
-  }
-  gtk_tree_sortable_set_default_sort_func (GTK_TREE_SORTABLE (store),
-      compare, NULL, NULL);
-  gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (store),
-      NAME_COL, GTK_SORT_ASCENDING);
-  return GTK_TREE_MODEL (store);
-}
-
-static void
-subtitle_encoding_combo_render (GtkComboBox * combo)
-{
-  GtkCellRenderer *renderer;
-
-  renderer = gtk_cell_renderer_text_new ();
-  gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo), renderer, TRUE);
-  gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo), renderer,
-      "text", NAME_COL, NULL);
-  gtk_cell_layout_set_cell_data_func (GTK_CELL_LAYOUT (combo),
-      renderer, is_encoding_sensitive, NULL, NULL);
-}
-
-const char *
-parole_subtitle_encoding_get_selected (GtkComboBox * combo)
-{
-  GtkTreeModel *model;
-  GtkTreeIter iter;
-  gint index_i = -1;
-
-  model = gtk_combo_box_get_model (combo);
-  if (gtk_combo_box_get_active_iter (combo, &iter)) {
-    gtk_tree_model_get (model, &iter, INDEX_COL, &index_i, -1);
-  }
-  if (index_i == -1)
-    return NULL;
-    
-  return subtitle_encoding_get_charset (index_i);
-}
-
-void
-parole_subtitle_encoding_set (GtkComboBox * combo, const char *encoding)
-{
-  GtkTreeModel *model;
-  GtkTreeIter iter, iter2;
-  gint index_i, i;
-
-  g_return_if_fail (encoding != NULL);
-
-  model = gtk_combo_box_get_model (combo);
-  index_i = subtitle_encoding_get_index (encoding);
-  gtk_tree_model_get_iter_first (model, &iter);
-  
-  do {
-    if (!gtk_tree_model_iter_has_child (model, &iter))
-      continue;
-    if (!gtk_tree_model_iter_children (model, &iter2, &iter))
-      continue;
-    do {
-      gtk_tree_model_get (model, &iter2, INDEX_COL, &i, -1);
-      if (i == index_i)
-        break;
-    } while (gtk_tree_model_iter_next (model, &iter2));
-    if (i == index_i)
-      break;
-  } while (gtk_tree_model_iter_next (model, &iter));
-  gtk_combo_box_set_active_iter (combo, &iter2);
-}
-
-void
-parole_subtitle_encoding_init (GtkComboBox *combo)
-{
-  GtkTreeModel *model;
-  subtitle_encoding_init ();
-  model = subtitle_encoding_create_store ();
-  gtk_combo_box_set_model (combo, model);
-  g_object_unref (model);
-  subtitle_encoding_combo_render (combo);
-}
-
-/*
- * vim: sw=2 ts=8 cindent noai bs=2
- */
diff --git a/parole/parole-subtitle-encoding.h b/parole/parole-subtitle-encoding.h
deleted file mode 100644
index 8a4315d..0000000
--- a/parole/parole-subtitle-encoding.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/* 
- * Copyright (C) 2001-2006 Bastien Nocera <hadess at hadess.net>
- *
- * encoding list copied from gnome-terminal/encoding.c
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
- *
- * The Totem project hereby grant permission for non-gpl compatible GStreamer
- * plugins to be used and distributed together with GStreamer and Totem. This
- * permission are above and beyond the permissions granted by the GPL license
- * Totem is covered by.
- *
- * Monday 7th February 2005: Christian Schaller: Add exception clause.
- * See license_change file for details.
- *
- */
-
-#ifndef PAROLE_SUBTITLE_ENCODING_H
-#define PAROLE_SUBTITLE_ENCODING_H
-
-#include <gtk/gtk.h>
-
-void 		parole_subtitle_encoding_init 		(GtkComboBox *combo);
-
-void 		parole_subtitle_encoding_set 		(GtkComboBox *combo, const char *encoding);
-
-const char     *parole_subtitle_encoding_get_selected   (GtkComboBox *combo);
-
-#endif /* PAROLE_SUBTITLE_ENCODING_H */
diff --git a/parole/parole-utils.c b/parole/parole-utils.c
deleted file mode 100644
index e429d65..0000000
--- a/parole/parole-utils.c
+++ /dev/null
@@ -1,337 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <gst/gst.h>
-#include <glib.h>
-
-#include <libxfce4util/libxfce4util.h>
-
-#include "parole-utils.h"
-
-/* List from xine-lib's demux_sputext.c */
-static const char subtitle_ext[][4] = {
-	"asc",
-	"txt",
-	"sub",
-	"srt",
-	"smi",
-	"ssa",
-	"ass"
-};
-
-/*
- * compare_by_name_using_number
- * 
- * * Copyright (c) 2005-2007 Benedikt Meurer <benny at xfce.org>
- * 
- */
-static gint
-compare_by_name_using_number (const gchar *ap,
-                              const gchar *bp)
-{
-    guint anum;
-    guint bnum;
-
-    /* determine the numbers in ap and bp */
-    anum = strtoul (ap, NULL, 10);
-    bnum = strtoul (bp, NULL, 10);
-
-    /* compare the numbers */
-    if (anum < bnum)
-	return -1;
-    else if (anum > bnum)
-	return 1;
-
-    /* the numbers are equal, and so the higher first digit should
-    * be sorted first, i.e. 'file10' before 'file010', since we
-    * also sort 'file10' before 'file011'.
-    */
-    return (*bp - *ap);
-}
-
-/*
- * thunar_file_compare_by_name
- * 
- * * Copyright (c) 2005-2007 Benedikt Meurer <benny at xfce.org>
- * 
- */
-gint
-thunar_file_compare_by_name (ParoleFile *file_a,
-                             ParoleFile *file_b,
-                             gboolean         case_sensitive)
-{
-    const gchar *ap;
-    const gchar *bp;
-    guint        ac;
-    guint        bc;
-
-
-    /* we compare only the display names (UTF-8!) */
-    ap = parole_file_get_display_name (file_a);
-    bp = parole_file_get_display_name (file_b);
-
-    /* check if we should ignore case */
-    if (G_LIKELY (case_sensitive))
-    {
-	/* try simple (fast) ASCII comparison first */
-	for (;; ++ap, ++bp)
-        {
-	    /* check if the characters differ or we have a non-ASCII char */
-	    ac = *((const guchar *) ap);
-	    bc = *((const guchar *) bp);
-	    if (ac != bc || ac == 0 || ac > 127)
-		break;
-	}
-
-	/* fallback to Unicode comparison */
-	if (G_UNLIKELY (ac > 127 || bc > 127))
-        {
-	    for (;; ap = g_utf8_next_char (ap), bp = g_utf8_next_char (bp))
-            {
-		/* check if characters differ or end of string */
-		ac = g_utf8_get_char (ap);
-		bc = g_utf8_get_char (bp);
-		if (ac != bc || ac == 0)
-		    break;
-	    }
-        }
-    }
-    else
-    {
-	/* try simple (fast) ASCII comparison first (case-insensitive!) */
-	for (;; ++ap, ++bp)
-        {
-	    /* check if the characters differ or we have a non-ASCII char */
-	    ac = *((const guchar *) ap);
-	    bc = *((const guchar *) bp);
-	    if (g_ascii_tolower (ac) != g_ascii_tolower (bc) || ac == 0 || ac > 127)
-		break;
-        }
-
-	/* fallback to Unicode comparison (case-insensitive!) */
-	if (G_UNLIKELY (ac > 127 || bc > 127))
-	{
-	    for (;; ap = g_utf8_next_char (ap), bp = g_utf8_next_char (bp))
-            {
-		/* check if characters differ or end of string */
-		ac = g_utf8_get_char (ap);
-		bc = g_utf8_get_char (bp);
-		if (g_unichar_tolower (ac) != g_unichar_tolower (bc) || ac == 0)
-		    break;
-            }
-        }
-    }
-
-    /* if both strings are equal, we're done */
-    if (G_UNLIKELY (ac == bc || (!case_sensitive && g_unichar_tolower (ac) == g_unichar_tolower (bc))))
-	return 0;
-
-    /* check if one of the characters that differ is a digit */
-    if (G_UNLIKELY (g_ascii_isdigit (ac) || g_ascii_isdigit (bc)))
-    {
-	/* if both strings differ in a digit, we use a smarter comparison
-	 * to get sorting 'file1', 'file5', 'file10' done the right way.
-	 */
-	if (g_ascii_isdigit (ac) && g_ascii_isdigit (bc))
-	    return compare_by_name_using_number (ap, bp);
-
-	/* a second case is '20 file' and '2file', where comparison by number
-	 * makes sense, if the previous char for both strings is a digit.
-	 */
-	if (ap > parole_file_get_display_name (file_a) && bp > parole_file_get_display_name (file_b)
-	    && g_ascii_isdigit (*(ap - 1)) && g_ascii_isdigit (*(bp - 1)))
-        {
-	    return compare_by_name_using_number (ap - 1, bp - 1);
-        }
-    }
-
-    /* otherwise, if they differ in a unicode char, use the
-     * appropriate collate function for the current locale (only
-     * if charset is UTF-8, else the required transformations
-     * would be too expensive)
-     */
-#ifdef HAVE_STRCOLL
-    if ((ac > 127 || bc > 127) && g_get_charset (NULL))
-    {
-	/* case-sensitive is easy, case-insensitive is expensive,
-         * but we use a simple optimization to make it fast.
-         */
-	if (G_LIKELY (case_sensitive))
-        {
-	    return strcoll (ap, bp);
-        }
-	else
-        {
-	    /* we use a trick here, so we don't need to allocate
-             * and transform the two strings completely first (8
-             * byte for each buffer, so all compilers should align
-             * them properly)
-             */
-	    gchar abuf[8];
-	    gchar bbuf[8];
-
-	    /* transform the unicode chars to strings and
-             * make sure the strings are nul-terminated.
-	     */
-	    abuf[g_unichar_to_utf8 (ac, abuf)] = '\0';
-	    bbuf[g_unichar_to_utf8 (bc, bbuf)] = '\0';
-
-	    /* compare the unicode chars (as strings) */
-	    return strcoll (abuf, bbuf);
-        }
-    }
-#endif
-
-    /* else, they differ in an ASCII character */
-    if (G_UNLIKELY (!case_sensitive))
-	return (g_unichar_tolower (ac) > g_unichar_tolower (bc)) ? 1 : -1;
-    else
-	return (ac > bc) ? 1 : -1;
-}
-
-gchar *
-parole_get_name_without_extension (const gchar *name)
-{
-    guint len, suffix;
-    gchar *ret;
-    
-    len = strlen (name);
-    
-    for ( suffix = len -1; suffix > 0;  suffix--)
-    {
-	if ( name [suffix] == '.' )
-	    break;
-    }
-    
-    ret = g_strndup (name, sizeof (char) * (suffix));
-    return ret;
-}
-
-static gchar *
-parole_get_subtitle_in_dir (const gchar *dir_path, const gchar *file)
-{
-    gchar *sub_path = NULL;
-    gchar *file_no_ext;
-    guint i;
-    
-    file_no_ext = parole_get_name_without_extension (file);
-    
-    for ( i = 0; i < G_N_ELEMENTS (subtitle_ext); i++)
-    {
-	sub_path = g_strdup_printf ("%s/%s.%s", dir_path, file_no_ext, subtitle_ext[i]);
-	
-	if ( g_file_test (sub_path, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_REGULAR ) )
-	    break;
-
-	g_free (sub_path);
-	sub_path = NULL;
-    }
-    g_free (file_no_ext);
-    
-    return sub_path;
-}
-
-gchar *parole_get_subtitle_path (const gchar *uri)
-{
-    GFile *file, *parent;
-    GFileInfo *info;
-    GError *error = NULL;
-    gchar *path;
-    gchar *file_name;
-    gchar *ret = NULL;
-    
-    file = g_file_new_for_commandline_arg (uri);
-    parent = g_file_get_parent (file);
-    
-    TRACE ("uri : %s", uri);
-    
-    if ( !parent )
-    {
-	g_object_unref (file);
-	return NULL;
-    }
-    
-    info = g_file_query_info (file, 
-			      "standard::*,",
-			      0,
-			      NULL,
-			      &error);
-    
-    if ( error )
-    {
-	g_warning ("%s: \n", error->message);
-	g_error_free (error);
-	return NULL;
-    }
-    
-    file_name = g_strdup (g_file_info_get_display_name (info));
-    
-    path = g_file_get_path (parent);
-    
-    ret = parole_get_subtitle_in_dir (path, file_name);
-
-    g_object_unref (file);
-    g_object_unref (parent);
-    g_object_unref (info);
-    
-    g_free (file_name);
-    g_free (path);
-    
-    return ret;
-}
-
-gboolean
-parole_is_uri_disc (const gchar *uri)
-{
-    if (   g_str_has_prefix (uri, "dvd:/")  || g_str_has_prefix (uri, "vcd:/") 
-        || g_str_has_prefix (uri, "svcd:/") || g_str_has_prefix (uri, "cdda:/"))
-	return TRUE;
-    else
-	return FALSE;
-}
-
-GdkPixbuf *parole_icon_load (const gchar *icon_name, gint size)
-{
-    GdkPixbuf *pix = NULL;
-    GError *error = NULL;
-    
-    pix = gtk_icon_theme_load_icon (gtk_icon_theme_get_default (), 
-				    icon_name, 
-				    size,
-				    GTK_ICON_LOOKUP_USE_BUILTIN,
-				    &error);
-				    
-    if ( error )
-    {
-	g_warning ("Unable to load icon : %s : %s", icon_name, error->message);
-	g_error_free (error);
-    }
-    
-    return pix;
-    
-}
diff --git a/parole/parole-utils.h b/parole/parole-utils.h
deleted file mode 100644
index 9db205a..0000000
--- a/parole/parole-utils.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#ifndef __PAROLE_UTILS_H_
-#define __PAROLE_UTILS_H_
-
-#include <gtk/gtk.h>
-#include <gdk/gdk.h>
-
-#include "parole-file.h"
-
-gint            thunar_file_compare_by_name 		(ParoleFile *file_a,
-							 ParoleFile *file_b,
-							 gboolean         case_sensitive);
-
-gchar          *parole_get_name_without_extension 	(const gchar *name)G_GNUC_MALLOC G_GNUC_WARN_UNUSED_RESULT;
-
-gchar          *parole_get_subtitle_path		(const gchar *uri) G_GNUC_MALLOC G_GNUC_WARN_UNUSED_RESULT;
-
-gboolean	parole_is_uri_disc			(const gchar *uri);
-
-GdkPixbuf      *parole_icon_load			(const gchar *icon_name,
-							 gint size);
-
-#endif /* __PAROLE_UTILS_ */
diff --git a/parole/parole-vis.c b/parole/parole-vis.c
deleted file mode 100644
index 64c24cf..0000000
--- a/parole/parole-vis.c
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <gst/gst.h>
-#include <glib.h>
-
-#include "parole-vis.h"
-
-static gboolean
-parole_vis_filter (GstPluginFeature *feature, gpointer data)
-{
-    GstElementFactory *factory;
-    
-    if ( !GST_IS_ELEMENT_FACTORY (feature) )
-	return FALSE;
-	
-    factory = GST_ELEMENT_FACTORY (feature);
-    
-    if ( !g_strrstr (gst_element_factory_get_klass (factory), "Visualization"))
-	return FALSE;
-	
-    return TRUE;
-}
-
-static void
-parole_vis_get_name (GstElementFactory *factory, GHashTable **hash)
-{
-    g_hash_table_insert (*hash, g_strdup (gst_element_factory_get_longname (factory)), factory);
-}
-
-GHashTable *parole_vis_get_plugins (void)
-{
-    GList *plugins = NULL;
-    GHashTable *hash;
-    
-    hash = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
-    
-    plugins = gst_registry_feature_filter (gst_registry_get_default (),
-					   parole_vis_filter,
-					   FALSE,
-					   NULL);
-					   
-    g_list_foreach (plugins, (GFunc) parole_vis_get_name, &hash);
-    
-    gst_plugin_feature_list_free (plugins);
-    
-    return hash;
-}
diff --git a/parole/parole-vis.h b/parole/parole-vis.h
deleted file mode 100644
index 96cc0ec..0000000
--- a/parole/parole-vis.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * * Copyright (C) 2009 Ali <aliov at xfce.org>
- *
- * Licensed under the GNU General Public License Version 2
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#ifndef __PAROLE_VIS_H_
-#define __PAROLE_VIS_H_
-
-#include <gst/gst.h>
-#include <glib.h>
-
-GHashTable        *parole_vis_get_plugins			(void);
-
-#endif /* __PAROLE_VIS_H_ */



More information about the Xfce4-commits mailing list